Web API 项目在部署时不会运行 - 无法加载文件或程序集“Newtonsoft.Json,版本=4.5.0.0”

2024-03-27

当我部署 MVC 5 WEB API 项目时,我不断收到此错误:

无法加载文件或程序集“Newtonsoft.Json,版本=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其之一 依赖关系。该系统找不到指定的文件。

我已关注this https://stackoverflow.com/questions/12027543/visual-studio-2012-web-api-project-wont-run-cant-find-newtonsoft-json并重新安装 NuGet 包“Update-Package Newtonsoft.Json -Reinstall”,但它不起作用。

有谁知道这里可能出了什么问题吗?


检查对 Newtonsoft.json DLL 的引用,并确保它没有自动选择解决方案中的包文件夹之外的版本。

我的 VS 2013 不断在各种版本中找到其他副本/program files (x86)/...文件夹。它甚至忽略了将包版本 DLL 显式添加到项目中的情况。必须更深入地挖掘以找出发生这种情况的原因......

调查

我打开了项目.csproj在文本编辑模式下打开文件,并搜索对 Newtonsoft.Json 的所有引用。

事实证明,我的 csproj 文件中对 DLL 的引用不是一个,而是两个(我不知道这是可能的)。其中一个引用了较旧的 Newtonsoft.json 5.0.6(当前版本为 5.0.8)。

Solution

我没有手动删除其中一个,而是将这个缺失的元素添加到第二个 DLL 包含中。我还将版本号更改为5.0.8:

  <Private>True</Private>

所以现在看起来像:

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

Private是为 DLL 引用定义“复制本地”的设置。然后它再次开始在输出中包含 DLL!

我将找出从 csproj 文件中删除哪些内容,但现在如果您遇到此问题,这可能会让您继续下去。看起来原因可能是过去的 NUGET 更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web API 项目在部署时不会运行 - 无法加载文件或程序集“Newtonsoft.Json,版本=4.5.0.0” 的相关文章

随机推荐