2015-10-16 49 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