类型' Newtonsoft.Json.JsonConvert'存在于“Newtonsoft.Json.dll”和#39;和' NuGetApi2.dll'

时间:2016-09-06 09:25:14

标签: c# .net dll visual-studio-2013 nuget

我正在尝试使用

将对象即时序列化为即时窗口
Newtonsoft.Json.JsonConvert.SerializeObject(myObj);

但是我收到了以下错误

  

类型' Newtonsoft.Json.JsonConvert'存在于“Newtonsoft.Json.dll”和#39;和' NuGetApi2.dll'

当项目中未引用的.dll被放入该项目中引用的其他bin旁边的.dll文件夹并且其中包含相同的库时(在这种情况下{在Newtonsoft.Json {1}}中未在项目中引用的内容

为什么我在使用立即/调试窗口时才会出现此异常,而不是在编译代码时?(当编译它时工作正常,因为编译器正在使用项目中引用的dll)

如何告诉Visual Studio NuGetApi2.dll使用哪个(最好不必停止程序运行)? 一个显而易见的方法是删除项目中没有引用的.dll,......我要求的是:有没有办法告诉它.dll使用来自dll的代码{1}} ...

更新:可以在此处找到重现错误的解决方案:

https://github.com/liufa/Temp

我在Immediate window中使用MVC应用程序压缩了解决方案,以便在WebApplication1.7zHomeController方法中重现添加断点,并在遇到粘贴时将Index粘贴到即时窗口中视觉工作室。

项目代码如下:

Newtonsoft.Json.JsonConvert.SerializeObject("sfdsdfsdf");

1 个答案:

答案 0 :(得分:-1)

默认情况下,.Net网站会在启动时加载bin文件夹中的所有程序集。您可以通过修改web.config文件来更改此行为,在这种情况下,您需要列出要加载的程序集。

以下是仅加载MySite.dll

版本1.0.0.0的示例
<system.web>
  <compilation>
    <assemblies>
      <remove assembly="*" />
      <add assembly="MySite, Version=1.0.0.0, Culture=neutral />
    </assemblies>
  </compilation>
</system.web>

如果你只加载你需要的组件而不加载NuGetApi2组件,这应该可以解决你的问题