Ausführen von TextTransform.exe (T4) auf einem Build-Server

8

Ich versuche einen Prozess einzurichten, bei dem meine T4-Vorlagen auf dem Build-Server transformiert werden (Visual Studio ist dort nicht installiert).

Ich habe alle Online-Referenzen gelesen, konnte aber keine eindeutige Quelle finden, die zeigt, wie das geht.

Genauer gesagt, hier sind die 2 Probleme, denen ich begegnet bin:

  • TextTransform.exe gibt eine Fehlermeldung über fehlende DLL aus:
  

C: \ TeamCity \ Buildagent \ work \ AppSettings.tt (0,0): Fehler CS0006:   Transformation kompilieren: Metadatendatei   'Microsoft.VisualStudio.TextTemplating.Interfaces.10.0,   Version = 10.0.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a '   konnte nicht gefunden werden

Das Registrieren der DLL-Dateien mit gacutil behebt dieses Problem, obwohl ich diesen Schritt vermeiden möchte.

  • Bei Verwendung der Host.ResolvePath (string) -Methode wird bei der Ausführung außerhalb von Visual Studio kein Wert zurückgegeben.

Diese Methode hilft beim Bestimmen eines vollständigen Pfads zur TXT-Datei, die von der Vorlage als Datenquelle verwendet wird. Ohne diese Datei kann diese Datei nicht auf dem Build-Server gefunden werden.

Jede Hilfe wird geschätzt, um das zu erreichen.

BEARBEITEN: Öffnen eines MS CONNECT-Problems: Ссылка

Referenzen, die ich überprüft habe:

lysergic-acid 24.05.2012, 12:14
quelle

3 Antworten

2

Ich glaube, das Problem ist, dass Sie hostspezifische Funktionen wie ResolvePath verwenden.

Eine Möglichkeit, die ich versuchen würde, besteht darin, dafür zu sorgen, dass die Vorlagen nicht ResolvePath verwenden, sondern sich auf relative Pfade von einem bekannten Ort verlassen.

Dieser bekannte Ort könnte bekannt sein durch:

%Vor%

Wenn Sie nicht die Idee haben, Dev-Setup-Umgebungsvariablen zu erzwingen, würde ich einen "intelligenten" Auflösungspfad erstellen, der die Umgebungsvariable verwendet, falls verfügbar, ansonsten auf Host.ResolvePath.

Hoffe, das hilft

    
FuleSnabel 24.05.2012 18:08
quelle
1

Entfernen Sie die Microsoft TextTransform.exe und verwenden Sie die freie Version von MonoDevelop, die keine externen Abhängigkeiten enthält.

Siehe hier: T4 ohne Visual Studio?

    
Ethan J. Brown 25.05.2012 18:15
quelle
0
  1. Kopieren Sie das folgende Verzeichnis von Ihrem Entwicklungscomputer auf den Build-Server.

    Quelle (Ihre Maschine):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    Ziel (Build-Server):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    Dabei ist <version> die neueste Version.

  2. Kopieren Sie alle Assemblys (.dll) von Ihrem Entwicklungscomputer auf den Build-Server.

    Quelle (Ihre Maschine): %WinDir%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.*

    Ziel (Build-Server):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    Dabei steht * für den Rest des Verzeichnisnamens.

  3. Verwenden Sie Gacutil / i , um alle Kopien zu installieren Assemblys in GAC des Buildservers.

AlexMAS 18.03.2015 05:48
quelle