2 Stimmen

Versuchen, MSBuild von der Kommandozeile für WP7-Lösung zu verwenden

Ich versuche, eine WP7-Lösungsdatei Form der Befehlszeile mit MSBuild (die Lösungsdatei baut perfekt in VS) zu bauen. Bis jetzt habe ich die folgenden:

msbuild Test.WP7.sln /t:rebuild /p:OutputPath="bin\Release" /p:Platform="Any CPU" /p:Configuration="Release"

Das Problem, das ich habe, ist ein Pre-Build-Schritt, um alle NuGet-Pakete zu installieren, die erforderlich sind, ist das Tool durch relative Verzeichnis anders als die Lösungsdatei verweisen:

..\Tools\NuGet\nuget install $(ProjectDir)packages.config -o $(SolutionDir)Packages

Wenn MSBuild nun von der Befehlszeile aus ausgeführt wird, kann es dieses Verzeichnis nicht finden und gibt eine MSB3073-Fehlermeldung aus:

" C:\Work\test\trunk\test\test.WP7.sln "(Ziel wiederherstellen) (1) -> " C:\Work\test\trunk\test\test.Core.View.ViewModel\test.Core.View.ViewModel.csproj "(Ziel wiederherstellen) (4) -> c: \Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (902,9): Fehler MSB3073: Der Befehl ".. \Tools\NuGet\nuget installieren C:\Work\test\trunk\test\test.Core.View.ViewModel\packages.config -o C:\Work\test\trunk\test\Packages " wurde mit Code 3 beendet. [ C:\Work\test\trunk\test\test.Core.View.ViewModel\test.Core.View.ViewModel.csproj ]

Haben Sie eine Idee, wie ich dieses Problem umgehen kann, ohne die Projekt- oder Lösungsdateien zu ändern?

4voto

Claus Jørgensen Punkte 25581

Verwenden Sie keinen relativen Pfad für NuGet. Verwenden Sie stattdessen die $(SolutionDir) Variable, etwa so:

<Target Name="BeforeBuild">
    <Exec Condition="Exists('$(ProjectDir)packages.config')" 
          Command="&quot;$(SolutionDir)Tools\nuget.exe&quot; install &quot;$(ProjectDir)packages.config&quot; -o &quot;$(SolutionDir)Packages&quot;" />
</Target>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X