2016-06-23 38 views
1

Mein .csproj definiert das folgende Post-Build-Ereignis in der .csproj-Datei, die eine symbolische Verknüpfung neu generiert. Dies funktioniert innerhalb fein mit einem manuellen Visual Studio zu bauen und die Symlink ohne Frage regeneriert wird:Verwenden von mklink-Befehl in einem MSBuild PostBuildEvent in TFS

<PostBuildEvent> 
    del C:\foo\foo\bin\debug\my.config 
    mklink C:\bar\bar\bar\bar\bar\bar\bin\debug\my.config c:\baz\baz\my.config 
</PostBuildEvent> 

aber ich versuche, durch kontinuierliche Integration einzurichten TFS2015 mit automatisiertem baut MSBuild verwenden, aber in diesem Fall des Build scheitert mit 'dem Befehl mklink C: \ bar \ bar \ bar \ bar \ bar \ bar \ bin \ debug \ mein.config c: \ baz \ baz \ mein.config mit Code 1 beendet'.

Wie gehe ich vor beim Generieren einer symbolischen Verbindung über einen automatisierten Build?

+0

Sind Sie mit dem alten XAML bauen oder die neue vNext bauen? –

+0

Können Sie das Projekt mit MSBuild manuell auf dem Build Agent-Computer ausführen? Gibt es mehr Fehlermeldung? Haben Sie überprüft, ob der Pfad auf Ihrem Build Agent-Computer gültig ist? –

+0

Ich benutze den neuen vNext-Build, und ob ich versuche, manuell auszuführen oder CI zu erlauben, den Build auszulösen, ist die gleiche Fehlermeldung, die genaue Syntax lautet: del C: \ foo \ foo \ bin \ debug \ my.config mklink C: \ bar \ bar \ bar \ bar \ bar \ bin \ debug \ mein.config c: \ baz \ baz \ meine.config "mit Code 1 beendet. Unerwarteter Exit-Code empfangen von msbuild.exe: 1 Ich verifizierte, dass alle Pfade existieren/es gibt keine Rechtschreibfehler.Ich denke, es hat etwas mit mklink zu tun, die "run as administrator" Rechte benötigen, um einen Symlink zu erstellen. Gibt es eine Möglichkeit zu maskieren ein in MSBuild? – NewJoizey

Antwort

1

ich beschlossen dies durch die Variable $ (BuildingInsideVisualStudio) auf true in meinem csproj Datei auf folgende Weise einstellen:

<PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'"> 
    <PostBuildEvent> 
     del C:\foo\foo\bin\debug\my.config 
     mklink C:\bar\bar\bar\bar\bar\bar\bin\debug\my.config c:\baz\baz\my.config 
    </PostBuildEvent> 
</PropertyGroup> 

ich an anderer Stelle dies als eine mögliche Antwort gesehen hatte, aber die Beiträge sah ich falsch zeigte Syntax und nicht klar veranschaulichen, wie Sie die Variable im Kontext des csproj-Build-Skript verwenden. Hoffentlich wird dies für jemanden klären.

Dieser MSDN-Artikel war nützlich: https://msdn.microsoft.com/en-us/library/ms171468(v=vs.140).aspx