安装了VS2013 RC以及之前的预览版后,MS似乎已经创建了一种情况,即在构建过程中,blend的集成会导致旧版本的newtonsoft.json在搜索路径中最终结束。导致此类错误
类型'Newtonsoft.Json.Linq.JObject'在程序集中定义 没有引用。您必须添加对程序集的引用 'Newtonsoft.Json,Version = 3.5.0.2,Culture = neutral, 公钥=空”。
我一直在重命名:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll
有效,就像这些reg键一样:
[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中的依赖项?
答案 0 :(得分:2)
使用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>
HintPath
优先于其他搜索路径。
答案 1 :(得分:1)
我在VS2013,专业版发布时遇到了simelar问题。
即使指定了HintPath,VS在考虑引用时也会在json dll的blend目录中查找。
解决方法可能是删除或重命名混合目录中的Json dll,我不是混合的密集用户,但是当混合加载时,进程监视器检测到没有使用Json dll ...并且当没有json dll时在blend目录中,refrence按预期工作,至少在我的情况下...
答案 2 :(得分:0)
问题似乎是我当前雇主稍微深奥的构建过程的本地问题,其中引用的库存储在构建输出文件夹中(通过maven)。这在搜索过程中具有非常低的优先级,因此在问题中存在问题。
解决方案,不要将您的引用放在输出文件夹中。它不仅仅是搞砸了!