我正在尝试使用MSBuild从命令行构建WP7解决方案文件(解决方案文件在VS内部构建完美)。到目前为止,我有以下内容:
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”(重建目标)(1) - > “C:\ Work \ test \ trunk \ test \ test.Core.View.ViewModel \ test.Core.View.ViewModel.csproj”(重建目标)(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]
如何在不更改项目或解决方案文件的情况下解决这个问题?
答案 0 :(得分:4)
不要使用NuGet的相对路径。而是使用$(SolutionDir)
变量,如下所示:
<Target Name="BeforeBuild">
<Exec Condition="Exists('$(ProjectDir)packages.config')"
Command=""$(SolutionDir)Tools\nuget.exe" install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages"" />
</Target>