2015-10-16 47 views
0

我得到了一些奇怪的問題複製在這裏,有一個在Visual Studio中正常地構建一個軟件,所有引用其中使用的NuGet,並將Newtonsoft.Json.dll是包文件夾以及該文件夾的參考點。Newtonsoft.Json.dll正在從錯誤的位置,在構建服務器

在構建服務器建立的情況下,我們注意到測試失敗,並會進一步發現,其實拷入Newtonsoft.Json.dll是錯誤的,從混合文件夾。

從生成日誌:

複製文件從 「d:\ APPS \微軟的Visual Studio 12.0 \混合\ Newtonsoft.Json.dll」 到「d:\ TB \ 2 \ PLWRO,WebPP \ WebPP-主要-DEV-CI \ BIN \ Newtonsoft.Json.dll」。

爲了解決它,我將混合文件夾中的Newtonsoft.Json.dll更名爲另一件事,然後構建按預期正常工作。

我的問題是,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

您可以嘗試在您的HintPath元素之後添加<private>true</private>元素。這應該強制複製到本地目錄。

這是有趣的另一部分,你正在尋找一箇舊版本(v4.5.0.0),而在你的包引用的新版本(7.0.1)。

在Visual Studio中,你可以試着問的NuGet更新參考到7.x此庫,然後看看是否有幫助的MSBuild從更具體的地點拉庫。

+0

其實v4.5.0.0是指正確的包,如果你嘗試添加的包,你會看到那個版本的「包含」爲好。爲什麼「私人」是「真實的」應該起作用?爲什麼這隻應該與這個包不同? – Fabito