2011-08-15 97 views
2

我試圖從命令行使用MSBuild構建WP7解決方案文件(解決方案文件在VS中完美地構建)。到目前爲止,我有以下幾點:嘗試從WP7解決方案的命令行使用MSBuild

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

我遇到的問題是一個預先生成步驟安裝所需的任何的NuGet包,該工具是參考由相對目錄從溶液中的文件不同:

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

現在,當從命令行運行MSBuild無法找到此目錄並返回一個MSB3073錯誤,如:

「C:\ Work \ test \ trunk \ test \ test.WP7.sln」(rebuild target)( 1) - > 「C:\ Work \ test \ trunk \ test \ tes t.Core.View.ViewModel \ test.Core.View.ViewModel.csproj「(Rebuild target)(4) - > c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(902 ,9):錯誤MSB3073:命令「.. \ Tools \ NuGet \ nuget安裝C:\ Work \ test \ trunk \ test \ test.Core.View.ViewModel \ packages.config -o C:\ Work \ test \ trunk \ test \ Packages「退出代碼3. [C:\ Work \ test \ trunk \ test \ test.Core.View.ViewModel \ test.Core.View.ViewModel.csproj]

任何想法如何可以在不改變項目或解決方案文件的情況下獲得此結果

回答

4

請勿使用NuGet的相對路徑。而是使用$(SolutionDir)變量,就像這樣:

<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> 
+0

這是解決方案目錄以外的,如在一個目錄從那裏... – AwkwardCoder

+2

但是你指定它相對於您生成位置。所以除非你建立在正確的文件夾,否則它不應該工作。改用'$(SolutionDir)\ .. \ Tools \ NuGet \ nuget.exe'。但是,那就是說,你應該*將nuget.exe工具作爲解決方案的一部分,而不是作爲全球資產! –

+0

排序後,我改變了路徑使用'$(SolutionDir).. \ Tools' – AwkwardCoder

相關問題