Visual studio VS2013和Newtonsoft.Json 3.5.0.2
在安装了VS2013 RC和之前的预览版之后,MS似乎创造了这样一种情况:blend的集成导致旧版本的newtonsoft.json在构建过程中在搜索路径中排名靠前。导致此类错误的原因 类型“Newtonsoft.Json.Linq.JObject”是在 未引用。必须添加对程序集的引用 'Newtonsoft.Json,版本=3.5.0.2,区域性=中性, PublicKeyToken=null' 我一直在重命名:Visual studio VS2013和Newtonsoft.Json 3.5.0.2,visual-studio,visual-studio-2013,Visual Studio,Visual Studio 2013,在安装了VS2013 RC和之前的预览版之后,MS似乎创造了这样一种情况:blend的集成导致旧版本的newtonsoft.json在构建过程中在搜索路径中排名靠前。导致此类错误的原因 类型“Newtonsoft.Json.Linq.JObject”是在 未引用。必须添加对程序集的引用 'Newtonsoft.Json,版本=3.5.0.2,区域性=中性, PublicKeyToken=null' 我一直在重命名: C:\Program Files (x86)\Microsoft Visual
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll
这是可行的,因为核弹这些注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Expression Blend MWD.Extensibility]
@="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Blend\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Expression Blend MWD.Interaction]
@="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Blend\\"
然而,一定有更好的办法吗?当然,不应该在VS二进制目录中找到gac中没有的依赖项,而不是我们自己的目标输出目录 使用NuGet安装Newtonsoft.Json。这将导致向项目文件中添加以下内容:
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
真的
..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll
HintPath
将优先于其他搜索路径。这个问题似乎是我当前雇主的一个稍微深奥的构建过程的局部问题,其中引用的库存储在构建输出文件夹中(通过maven)。这在搜索过程中的优先级很低,因此存在问题
解决方案,不要将引用放在输出文件夹中。不仅仅是这件事搞砸了 我在VS2013专业版上遇到了simelar问题 VS在考虑引用时在混合目录中查找json dll,即使指定了HintPath
解决方法可能是删除或重命名blend目录中的Json dll,我不是blend的密集用户,但process monitor在加载blend时未检测到Json dll的使用。。。当blend目录中没有可用的json dll时,引用会按预期工作,至少在我的例子中是这样 谢谢你的回答,我已经意识到为什么我们会有这个问题,正如在标记的答案中所解释的。