尝试从WP7解决方案的命令行使用MSBuild

时间:2011-08-15 11:17:20

标签: windows-phone-7 msbuild pre-build-event

我正在尝试使用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]

如何在不更改项目或解决方案文件的情况下解决这个问题?

1 个答案:

答案 0 :(得分: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>