c# - Visual Studio 2013引用错误的dll版本

标签 c# dll visual-studio-2013 json.net

我正在尝试升级我的项目所依赖的第三方 dll。该dll是Newtonsoft.json.dll。

项目中当前版本是4.5,我正在升级到最新的6.0。

当我删除引用并添加新版本时,Visual Studio 2013 会像旧版本一样添加引用,即使 dll 是正确的。这是添加到我的 .csproj 中的内容:

<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
  <HintPath>..\lib\Newtonsoft.Json.dll</HintPath>
</Reference>

我可以将 .csproj 文件编辑为(第一个是我从空项目引用 dll 时得到的)

<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
  <HintPath>..\lib\Newtonsoft.Json.dll</HintPath>
</Reference>

或者不需要特定版本:

<Reference Include="Newtonsoft.Json">
  <HintPath>..\lib\Newtonsoft.Json.dll</HintPath>
</Reference>

我的项目可以编译,但是当我运行它时,出现错误,指出找不到引用的 dll 的 4.5 版本。我已经检查了所有依赖项,找不到任何对旧版本的引用,引发异常的代码是我在这个项目中的代码。

我不确定为什么 Visual Studio 无法解析正确的版本。我没有使用 NuGet。

我希望有人能提供一些小技巧来帮助我调试这个问题。这真的让我很困惑,我确信这是这么简单的事情,但我就是找不到它。

最佳答案

我建议采取dotPeek工具并打开编译后的项目,可以看到引用的 Newtonsoft.Json 的位置。
据我所知,dotPeek 会尝试以与 clr 类似的方式查找引用的 dll。

希望这有帮助。

关于c# - Visual Studio 2013引用错误的dll版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151324/

相关文章:

c++ - Visual Studio 2013 专业版错误 MSB8020

visual-studio-2013 - 从 VS2013Express 在 VS2013Pro 中打开项目时出错

c++ - 我可以将 visual studio 2013 与 unity 5 一起使用吗

c# - 在 DocumentReady 事件中文档没有准备好?

.net - 是否可以在.NET DLL中添加/删除/更改嵌入式资源?

c# - 这个(通用范围类)条件逻辑应该用多态性代替吗?如果是,那为什么?

c++ - 从二进制 dll 文件中删除 C++ 类名

c++ - 如何处理 "This application has failed to start because myproject.dll was not found."错误

c# - 如何在不违反 MVVM 模式的情况下从 WPF 中的 TabControl 更改 Tab

c# - 如何指定可能包含另一个类的类