Не удалось разрешить эту ссылку: NuGet на сервере CI.

Я запускаю сборку CI на контроллере сборки TFS, подключенном к VS Online. У меня возникла проблема «Не удалось разрешить эту ссылку» для пакета NuGet, и я наблюдал поведение, которого раньше не видел:

Локально пакет загружается в packages\FluentValidation.5.5.0, тогда как на сервере он загружается в packages\FluentValidation.5.5.0.0.

Packages.config:

<package id="FluentValidation" version="5.5.0" targetFramework="net45" userInstalled="true" />

.csproj файл $(SolutionDir) для общего проекта - работает для всех остальных проектов:

<Reference Include="FluentValidation, Version=5.5.0.0, Culture=neutral, processorArchitecture=MSIL">     
<HintPath>$(SolutionDir)\packages\FluentValidation.5.5.0\lib\Net40\FluentValidation.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

Восстановление пакета Nuget включено, поэтому, если я локально удалю пакет из папки пакетов и перестрою - все будет нормально.

Теперь о сервере CI. Журнал диагностики сборки состояния:

Установка FluentValidation 5.5.0.0. ... Успешно установлен FluentValidation 5.5.0.0.

Но дальше в журнале сборки:

16> C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64 \ Microsoft.Common.CurrentVersion.targets (1697,5): предупреждение MSB3245: не удалось разрешить эту ссылку. Не удалось найти сборку «FluentValidation». Убедитесь, что сборка существует на диске. Если эта ссылка требуется для вашего кода, вы можете получить ошибки компиляции. [C: \ Builds \ 24353 ... stuff ... \ projectfile.csproj] Для SearchPath "{HintPathFromItem}". Считается "C: \ Builds \ 24353 ... stuff ... \ packages \ FluentValidation.5.5.0 \ lib \ Net40 \ FluentValidation.dll",

Как и ожидалось - в этой папке нет пакета

C:\Builds\24353\... stuff ...\packages\FluentValidation.5.5.0\lib\Net40\.

Однако - это потому, что он загружается в другую папку на сервере CI:

C:\Builds\24353\... stuff ...\packages\FluentValidation.5.5.0.0\lib\Net40\.

(обратите внимание на дополнительный .0 после имени папки пакета).

Я понятия не имею, откуда взялись эти дополнительные .0. Кроме того, похоже, что проект игнорирует путь сборки. На сервере CI есть VS 2013, и я обновил NuGet на коробке, не помогло. Есть только одно место, где в ссылке есть 5.5.0.0 (с двумя нулями). Я удалил завершающие .0. Решение по-прежнему строится локально, но не на CI.

папка локальных пакетов слева - сервер справа

Обновление. Добавление второго пути к подсказке в файле .csproj, похоже, исправляет сборку на сервере CI, но нарушает ее локально. Я действительно не могу понять, почему это v5.0.0 локально и v5.0.0.0 на сервере CI.

PS Я сообщил об этом как об ошибке: https://github.com/NuGet/Home/issues/504


person Jochen van Wylick    schedule 29.04.2015    source источник


Ответы (1)


Оказывается, это была ошибка в NuGet, которая исправлена ​​в VS2015 RC:

Комментарий об ошибке

Источник: https://github.com/NuGet/Home/issues/504

person Jochen van Wylick    schedule 30.04.2015