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

Windows phone 7 尝试从WP7解决方案的命令行使用MSBuild,windows-phone-7,msbuild,pre-build-event,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 in

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


您知道如何在不更改项目或解决方案文件的情况下解决此问题吗?

不要使用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>


但您将其指定为相对于生成位置。因此,除非您在正确的文件夹中构建,否则它不会工作。改用
$(SolutionDir)\..\Tools\NuGet\NuGet.exe
。但也就是说,您应该将nuget.exe工具作为解决方案的一部分,而不是作为一项全球资产!在我更改使用“$(SolutionDir)…\Tools”的路径后排序