Newtonsoft.Json.dll копируется из неправильного места на сервере сборки

У меня здесь какая-то странная проблема, у меня есть программное обеспечение, которое обычно создается в Visual Studio, все ссылки добавлены с помощью NuGet, а Newtonsoft.Json.dll находится в папке пакетов, а также указывает на эту папку.

При сборке сервера сборки мы заметили сбои тестов и, пойдя дальше, обнаружили, что скопированная Newtonsoft.Json.dll на самом деле была неправильной, из папки Blend.

Из журнала сборки:

Копирование файла из "D:\APPS\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll" в "D:\TB\2\PLWRO-WebPP\WebPP-Main-Dev-CI\bin\Newtonsoft.Json.dll" ".

Чтобы решить эту проблему, я переименовал Newtonsoft.Json.dll из папки blend в другую вещь, после чего сборка заработала нормально, как и ожидалось.

Мой вопрос: ПОЧЕМУ?!?!? Похоже, сборка ищет ссылки раньше в папке Blend, а не в заданном месте в пути подсказки — см. ниже.

<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>

person Fabito    schedule 16.10.2015    source источник


Ответы (1)


Вы можете попробовать добавить элемент <private>true</private> после вашего элемента HintPath. Это должно принудительно скопировать в локальный каталог.

Другая интересная часть: вы ищете старую версию (v4.5.0.0), ссылаясь на новую версию (7.0.1) в своих пакетах.

В Visual Studio вы можете попробовать попросить Nuget обновить ссылку на 7.x для этой библиотеки, а затем посмотреть, поможет ли это MSBuild извлечь библиотеку из более конкретного места.

person Adam Stewart    schedule 16.10.2015
comment
На самом деле v4.5.0.0 относится к правильному пакету, если вы попытаетесь добавить пакет, вы также увидите эту версию в списке «Включить». Почему private as true должен работать? И почему это должно быть иначе только для этого пакета? - person Fabito; 19.10.2015