2015-10-16 4 views
0

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

Мой вопрос: WHYYY?!?!? Кажется, что сборка ищет ссылки в папке 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> 

ответ

0

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

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

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

+0

Фактически v4.5.0.0 относится к правильному пакету, если вы попытаетесь добавить пакет, вы также увидите эту версию в «Включить». Почему «частное» как «истинное» должно работать? И почему это должно быть иначе только для этого пакета? – Fabito