2

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

1 回答 1

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>
于 2011-08-15T11:23:39.900 回答