Visual Studio 2013引用了错误的dll版本

时间:2014-06-10 21:41:08

标签: 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。

我希望有人能够帮助我调试这个问题。这真让我感到困惑,我确信这是一件很简单的事,但我找不到它。

1 个答案:

答案 0 :(得分:2)

我建议您使用dotPeek工具并打开已编译的项目并查看引用的Newtonsoft.Json的位置。
据我所知,dotPeek将尝试以与clr类似的方式查找引用的dll。

希望这有帮助。