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
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Wie lautet die vollständige Fehlermeldung?
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 Kompilierte Transformation: Der Name 'Translation' ist im aktuellen Kontext nicht vorhanden.
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?
Kaktusfan1707 Geschrieben 29. Oktober 2013 Autor Geschrieben 29. Oktober 2013 namespace Testapplication.Model { public class Translation { public static Dictionary<int, string> LoadAllForEnum() { ... } } }
Klotzkopp Geschrieben 29. Oktober 2013 Geschrieben 29. Oktober 2013 Hast du eine assembly-Direktive für die Bibliothek, die Translation enthält?
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.
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.
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?
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Ist das ein Laufzeit-Template oder ein Designzeit-Template?
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.
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Ok, danke für die Hilfe. Es funktioniert jetzt.
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; ...
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.
Klotzkopp Geschrieben 30. Oktober 2013 Geschrieben 30. Oktober 2013 Was heißt denn "eingebunden"? Hast du einen Assemblyverweis?
Kaktusfan1707 Geschrieben 30. Oktober 2013 Autor Geschrieben 30. Oktober 2013 Unter "Verweise" steht "MonitoringLibrary"
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden