我在VS2013中有一个asp.net mvc 5项目,我将所有内容的nuget包更新到最新版本
然后我遇到了这个错误
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'
有没有其他人遇到这个.
我得到了那个错误,因为我有一个额外的
<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>
在我的Web.csproj中直接在通常的引用下面,它已经包含对最新的Newtonsoft.Json.dll的正确引用.在VS中,仅显示了对较新组件的引用.
解决方案是:我将有效的Owin引用移动到主引用ItemGroup并删除了过时的Newtonsoft.Json.dll引用(手动编辑csproj文件).
错误消息的原因:在我的机器上,旧的Newtonsoft.Json.dll的HintPath不存在,因此MSBuild正在寻找其他地方并采用了Blend版本.
(顺便说一句:要了解MSBuild为什么以及在哪里寻找某个装配使用TOOLS – >选项 – >项目和解决方案 – >构建和运行 – >并将“MSBuild项目构建输出详细程度”设置为“详细” “并重建项目.)