VS2013和Newtonsoft.Json 3.5.0.2

时间:2013-10-22 09:23:15

标签: visual-studio visual-studio-2013

安装了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中的依赖项?

3 个答案:

答案 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)。这在搜索过程中具有非常低的优先级,因此在问题中存在问题。

解决方案,不要将您的引用放在输出文件夹中。它不仅仅是搞砸了!