Попытка использовать MSBuild из командной строки для решения WP7

Я пытаюсь создать файл решения WP7 из командной строки с помощью MSBuild (файл решения отлично строится внутри 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]

Любые идеи, как я могу обойти это, не меняя файлы проекта или решения?


person AwkwardCoder    schedule 15.08.2011    source источник


Ответы (1)


Не используйте относительный путь для 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>
person Claus Jørgensen    schedule 15.08.2011
comment
Но вы указали его относительно места сборки. Поэтому, если вы не создадите нужную папку, это не должно работать. Вместо этого используйте $(SolutionDir)\..\Tools\NuGet\nuget.exe. Но при этом вы должны использовать инструмент nuget.exe как часть своего решения, а не как глобальный актив! - person Claus Jørgensen; 15.08.2011
comment
отсортировано после того, как я изменил путь для использования "$(SolutionDir)..\Tools" - person AwkwardCoder; 15.08.2011