5

在安装了 VS2013 RC 和之前的预览版之后,MS 似乎创造了一种情况,即混合的集成导致旧版本的 newtonsoft.json 在构建过程中最终出现在搜索路径中。导致此类错误

类型“Newtonsoft.Json.Linq.JObject”在未引用的程序集中定义。您必须添加对程序集“Newtonsoft.Json,Version=3.5.0.2,Culture=neutral,PublicKeyToken=null”的引用。

我一直在重命名:

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

4

3 回答 3

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优先于其他搜索路径。

于 2014-02-03T19:56:32.507 回答
1

我对 VS2013 专业版也有类似的问题。

即使指定了 HintPath,VS 在考虑引用时也会在混合目录中查找 json dll。

解决方法可能是删除或重命名混合目录中的 Json dll,我不是混合的密集用户,但进程监视器在混合加载时检测到没有使用 Json dll ......并且当没有可用的 json dll 时至少在我的情况下,混合目录按预期工作。

于 2014-02-07T08:39:54.630 回答
0

这个问题似乎是我当前雇主的一个稍微深奥的构建过程的本地问题,其中引用的库存储在构建输出文件夹中(通过 maven)。这在搜索过程中的优先级非常低,因此是问题中的问题。

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

于 2014-02-03T23:33:15.437 回答