Ich habe eine T4-Vorlage, die mehrere .tt-Dateien in meinem Projekt verarbeitet. Ich habe auch einige benutzerdefinierte Klassen, die ich definiert habe, um mit der Code-Transformation zu helfen.
%Vor%Dies funktioniert in Visual Studio, ich habe ein VS-Makro, das $ (TargetDir) korrekt definiert.
Nun möchte ich den Codegenerierungsprozess während meines Build-Prozesses durchführen. Ich habe hinzugefügt:
%Vor%Mein Build läuft, aber ich bekomme:
C: \ Programme (X 86) \ MSBuild \ Microsoft \ VisualStudio \ TextTemplating \ v10.0 \ Microsoft.TextTemplating.targets (407): Der Host hat beim Versuch, das Problem zu lösen, eine Ausnahme ausgelöst Assembly-Verweis '$ (TargetDir) \ MyDependency.dll'. Die Transformation wird nicht ausgeführt. Die folgende Ausnahme wurde ausgelöst: System.IO.FileLoadException: Der angegebene Assemblyname oder die Codebasis war ungültig. (Ausnahme von HRESULT: 0x80131047) um System.Reflection.AssemblyName.nInit (RuntimeAssembly & amp; Assembly, Boolean forInspection, Boolean raiseResolveEvent) at System.Reflection.AssemblyName.nInit () bei Microsoft.VisualStudio.TextTemplating.GlobalAssemblyCacheHelper.GetLocation (String strongName) um Microsoft.VisualStudio.TextTemplating.Sdk.Host.GenericTextTemplatingHost.ResolveAssemblyReference (String montageReferenz) at Microsoft.VisualStudio.TextTemplating.Engine.ResolveAssemblyReferences (ITextTemplatingEngineHost Host, TemplateProcessingSession-Sitzung). Zeile = -1, Spalte = -1
Offensichtlich wird $(TargetDir)
im Teambuild-Kontext nicht aufgelöst.
Ich habe versucht, TargetDir der Eigenschaftsgruppe meiner Build-Konfiguration hinzuzufügen, ohne Erfolg. Dieser Wert wird nicht in den Kontext des T4-Codegenerators übertragen.
Ich möchte keine Umgebungsvariable verwenden.
Wie kann ich $(TargetDir)
im Teambuild-Kontext richtig einstellen?
Ich sehe nicht, wo $ (OutputPath) von Visual Studio definiert wird. hast du $ (TargetDir) in deinem Gegenstand w / in deinem Projekt versucht? Dann können Sie das $ (TargetDir) \ aus Ihrer Assembly-Deklaration in der T4-Datei entfernen.
Ich habe gerade eine ganze Reihe von Möglichkeiten durchstudiert, um etwas Ähnliches wie Arbeit zu machen, werde heute oder morgen einen Blogbeitrag schreiben.
Also:
%Vor%in Ihrem csproj und
%Vor%in Ihrer T4-Datei