T4-Codegenerierung während des Builds, benutzerdefinierte Assemblyreferenz

9

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?

    
Gavin Stevens 30.10.2012, 18:54
quelle

1 Antwort

4

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

    
bc3tech 12.06.2013, 17:07
quelle

Tags und Links