- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在部署 MVC 5 WEB API 项目时不断收到此错误:
Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
我关注了this并重新安装 NuGet 包“Update-Package Newtonsoft.Json -Reinstall”,但它没有用。
这里有人知道哪里出了问题吗?
最佳答案
检查对 Newtonsoft.json DLL 的引用并确保它没有自动选择解决方案中 packages 文件夹之外的版本。
我的 VS 2013 一直在各种 /program files (x86)/...
文件夹中找到其他副本。它甚至忽略了将包版本 DLL 显式添加到项目中。必须更深入地挖掘以找出发生这种情况的原因......
我在文本编辑模式下打开项目 .csproj
文件,并搜索对 Newtonsoft.Json 的所有引用。
事实证明我在我的 csproj 文件中没有一个,而是两个对 DLL 的引用(我不知道这是可能的)。其中一个引用了较旧的 Newtonsoft.json 5.0.6(当前为 5.0.8)。
我没有手动删除其中一个,而是将这个缺失的元素添加到第二个 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 更新。
关于c# - Web API 项目在部署时不会运行 - 无法加载文件或程序集 'Newtonsoft.Json,版本 = 4.5.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405334/
我是一名优秀的程序员,十分优秀!