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 に答える