2014-02-12 46 views
6

我在VS2013一个asp.net mvc的5项目,我一切的的NuGet包更新到最新的Newtonsoft.Json.dll冲突VS 2013

然后我碰上这个错误

Error 2 The type 'Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver' exists in both 'c:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll' and '{path to my project}\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll' 

有没有其他人遇到过这个问题。

回答

4

我根本不使用Blend,所以我将Blend Newtonsoft.Json.dll重命名为“Newtonsoft.Json.dll.bak”。这被Marcus在Connect bug中提到。 Marcus继续说,Blend可能不会使用Newtonsoft.Json.dll,所以即使使用Blend,也可能这个修复不会影响你的工作。

+1

我看着引用的dll路径指向C:\ Program Files文件(x86)\ Microsoft Visual Studio 12.0 \ Blend \ Newtonsoft.Json.dll而不是packages文件夹,有没有办法修改这个路径? –

+0

你是我添加.bak文件,你不能改变路径 - 奇怪的错误。 Upvote Connect错误,说你可以重现它,并将它添加到你的监视列表。 –

+0

这不是正确的答案。这可能会奏效,但这是错误的,因为它可能有未知的后果。正确的方法是在这里:http://stackoverflow.com/a/21776577/103302 –

21

我得到的错误,因为我在Web.csproj正下方已经含有正确的引用到最新Newtonsoft.Json.dll通常引用了一个额外的

<ItemGroup> 
    <Reference Include="Newtonsoft.Json"> 
    <HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath> 
    </Reference> 
    <Reference Include="Owin"> 
    <HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath> 
    <Private>True</Private> 
    </Reference> 
</ItemGroup> 

。在VS中只显示了对较新组件的引用。

解决方法是:我将有效的Owin引用移到主引用ItemGroup中,并删除了过时的Newtonsoft.Json.dll引用(手动编辑csproj文件)。

错误消息的原因:在我的计算机上,旧的Newtonsoft.Json.dll的HintPath不存在,因此MSBuild正在寻找其他地方并使用Blend版本。 (请参阅MSBuild寻找某个组件的原因和位置,使用工具 - >选项 - >项目和解决方案 - >生成并运行 - >并将“MSBuild项目生成输出详细信息”设置为“详细” “重建项目)

+0

我在这里困惑。我在我的csproj文件中发现了两个引用。我删除了旧版本。没有变化。 – nVentimiglia

+0

这对我来说是个诀窍......谢谢! – Sam

+0

也为我工作。尊重! – Nenad

0

的根本原因是@ blueling的答案,我会引用:

原因的错误消息:在我的机器旧 Newtonsoft.Json的HintPath。 dll不存在,因此MSBuild在其他地方寻找 并采用了Blend版本。

我只是想把它作为一个单独的答案,使它更容易找到,因为人们可能不会阅读他/她的整个答案。

0

这种类型的问题主要在使用Visual Studio社区时发生。您不会在Visual Studio专业版上找到同样的问题。

我有这个问题,因为我在使用专业社区。

出现这种情况的原因是,在编译项目时,它会从两个位置引用一个来自 1)。 “C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Blend \ Newtonsoft.Json.dll”

2)。其他来自您的解决方案/项目参考。在这种情况下,两个版本不同

,它给

The type 'Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver' exists in both 'c:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll' and '{path to my project}\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll 

获得项目编制的唯一方法是重命名的文件夹混合的NewtonSoft DLL。