Использование NuGet PackageRestore с msbuild - PullRequest
3 голосов
/ 30 января 2012

У меня есть простой проект библиотеки классов (с Class1), и я включил восстановление пакета NuGet для решения.

Это импортирует задачу restorepackages в файл .csproj.

Я могу скомпилировать проект с помощью

C:>msbuild myproj.csproj /t:compile

И я могу успешно вызвать задачу restorepackages перед добавлением пакетов с помощью

C:>msbuild myproj.csproj /t:restorepackages

Однако добавление любого пакета приведет к сбою задачи restorepackages сошибка 3.

Похоже, что задача NuGet вызывается с неверным рабочим каталогом, и вы можете на самом деле исправить это поведение, удалив атрибут рабочий каталог в файле NuGet.targets, который был добавлен в решение.

Отредактируйте задачу следующим образом:

   <Exec Command="$(RestoreCommand)"
           LogStandardErrorAsError="true"
           Condition="Exists('$(PackagesConfig)')"
           WorkingDirectory="$(NuGetToolsPath)" />

и удалите рабочий каталог:

<Exec Command="$(RestoreCommand)"
           LogStandardErrorAsError="true"
           Condition="Exists('$(PackagesConfig)')"
           />

Кажется, что работает как ожидалось, как откомандной строки msbuild и в VS2010.

Кто-нибудь знает, может ли это изменение сломать какой-либо инструмент?

1 Ответ

1 голос
/ 11 февраля 2012

Может ли это быть связано с проблемой " Пакет восстановления $ (SolutionDir) заходит слишком далеко "?

Проверяли ли вы введенное свойство SolutionDir в файле проекта?Возможно, сгенерированный относительный путь не будет указывать на реальный каталог решения.

...