Сборка города с помощью пакетов NuGet - PullRequest
1 голос
/ 13 декабря 2011

Я настроил сборку в городе команды со ссылкой на пакет NuGet в тестовом проекте.

Я использовал структуру папок

\
|- Project1
  \- Project1.csproj
|-  Project1.Test
 \- Project1.Test.csproj
|- packages
 \- lib
  \- RhinoMocks

Проект Project1 успешно создается, но тестовый проект не выполняется на шаге ResolveAssemblyReferences.Относительный путь кажется неправильным.

[13:16:55]: [ResolveAssemblyReference] C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360, 9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Rhino.Mocks, Version=3.6.0.0, Culture=neutral, PublicKeyToken=0b3305902db7183f, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
[13:16:55]: [ResolveAssemblyReference]         For SearchPath "{HintPathFromItem}".
[13:16:55]: [ResolveAssemblyReference]         Considered "..\packages\RhinoMocks.3.6\lib\Rhino.Mocks.dll", but it didn't exist.

Конфигурация сборки TeamCity:

  • Задача MSBuild
  • Путь к файлу сборки: Project1.Test \ Project.Test.csproj
  • Рабочий каталог:% system.teamcity.build.checkoutDir% \ Project1.Test
  • Корень VCS указывает на корень структуры папок выше.

Насколько я могу судить, это может быть проблема MSBuild, я получаю ту же ошибку при запуске MSBuild из командной строки в папке извлечения на агенте сборки.

Дополнительная информация: Путь к подсказке предоставляется конфигурацией пакета Nuget.В Visual Studio ссылка на пакет работает правильно.Тем не менее, при запуске через MSBuild, он, похоже, запутался в своем текущем каталоге.Путь .. \ packages ... фактически является дословным справочным путем от Nuget.

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Я запутался в этой части структуры вашего проекта:

|- packages
 \- lib
  \- RhinoMocks

В этом нет необходимости, если вы извлекаете пакеты из NuGet. Единственный файл в разделе «пакеты», который следует проверить в системе контроля версий, - это repositories.config

Кроме того, когда TeamCity запускает MSBuild, как вы загружаете соответствующие зависимости NuGet? Это через TeamCity "NuGet Installer" или вы настроили свое решение / проекты для автоматического запуска установки nuget?

0 голосов
/ 13 декабря 2011

У вас есть смешанная ссылка с сильным именем сборки (версия и т. Д.) И путь подсказки. Если сборка находится в GAC на вашей машине, она будет расположена, даже если путь подсказки неверен. Если его нет в GAC на сборочной машине, его нельзя найти. Проверьте в своем файле проекта и посмотрите, является ли метаданные HintPath в ссылке правильным путем (похоже, что это должно быть ".. \ packages \ lib \ RhinoMocks ..." вместо того, что появляется в выходных данных.

Это куча ifs, для других идей мне нужно посмотреть, что внутри файла проекта, который терпит неудачу.

...