Kaktusfan1707 Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 (bearbeitet) Hallo, ich versuche gerade in einem t4 Template eine Funktion aufzurufen, die nicht im Template liegt. <# foreach(KeyValuePair<int, string> tr in Translation.LoadAllForEnum()) {#> <#= tr.Value #> = <#= tr.Key #> , <#}#> Der namespace ist auch drin: <#@ import namespace="Testapplication.Model" #> Doch er kann den Namespace oder die Funktion LoadAllForEnum nicht finden. Was mache ich falsch? Bearbeitet 29. Oktober 2013 von Kaktusfan1707 Zitieren
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Wie lautet die vollständige Fehlermeldung? Zitieren
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 Kompilierte Transformation: Der Name 'Translation' ist im aktuellen Kontext nicht vorhanden. Zitieren
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Kompilierte Transformation: Der Name 'Translation' ist im aktuellen Kontext nicht vorhanden.Also geht's um Translation, nicht um LoadAllForEnum. Was ist Translation und in welchem Namespace liegt es? Zitieren
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 namespace Testapplication.Model { public class Translation { public static Dictionary<int, string> LoadAllForEnum() { ... } } } Zitieren
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Hast du eine assembly-Direktive für die Bibliothek, die Translation enthält? Zitieren
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 Nein. Die beiden Dateien (tt-File und Translation.cs) liegen im gleichen Ordner und sind im gleichen Namespace. Zitieren
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Das ist T4 egal. Wenn du eine Klasse benutzt, musst du eine Assembly-Direktive dafür angeben. Zitieren
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 Und wie geht das? Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Das ist bist jetzt eine WindowsForms-Anwendung. Also brauche ich ein zweites Projekt für eine Library in die meine Klasse mit der Funktion kommt und diese dll kann ich dann im Template verwenden? Zitieren
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Ist das ein Laufzeit-Template oder ein Designzeit-Template? Zitieren
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Dann solltest du die im Template benötigte Klasse in eine Bibliothek auslagern. Du kannst ja schlecht eine Assembly in einem Template verwenden, das zum Bauen derselben Assembly benötigt wird. Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Ok, danke für die Hilfe. Es funktioniert jetzt. Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Jetzt habe ich mich doch zu früh gefreut. In der WindowsForms-Anwendung binde ich meine neue Monitoring.dll ein. Doch im Code von einer Form unterringelt er mir "MonitoringLibrary" und "Settings" was eine Klasse in MonitoringLibrary ist findet er auch nicht. using MonitoringLibrary; using System; using System.Windows.Forms; namespace MeinMonitoring { public partial class Optionen : Form { Settings user; Settings password; ... Zitieren
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Wie lautet die Fehlermeldung? Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Der Typ- oder Namespacename 'MonitoringLibrary'' konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) Aber die dll ist ja eingebunden. Zitieren
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Was heißt denn "eingebunden"? Hast du einen Assemblyverweis? Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Unter "Verweise" steht "MonitoringLibrary" Zitieren
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 So, nach etwas rumprobieren und Studio neustarten funktioniert es. Kann aber nicht sagen, an was es lag. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.