【问题标题】:'System.IO.FileLoadException' with newtonsoft-json带有 newtonsoft-json 的“System.IO.FileLoadException”
【发布时间】:2016-09-17 14:49:48
【问题描述】:

每次我在之前创建的 dll 程序集中调用 toJSONString() 方法时,调试器都会在 Visual Studio 的输出窗口中不断给我这个“System.IO.FileLoadException”错误消息。见下面的方法。我使用 NuGet 加载和引用 newtonsoft-json.dll 库,所以为什么运行时尝试不断失败是我无法理解的。

Object output;
...
public String toJSONString()
{
    String strOut = "";
    if (output != null)
    {
        strOut = JsonConvert.SerializeObject(output);
    }

    return strOut;
}

在“解决方案资源管理器”窗口的“参考”下,我检查了 Newtonsoft.Json 的路径,即 C:\temp2\DataTables_Examples\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll。该dll文件确实存在那里。我不知道为什么应用程序看不到它?任何帮助,将不胜感激。

【问题讨论】:

  • 尝试清理并重建解决方案。
  • 你试过update-package Newtonsoft.Json -reinstall 吗?

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


【解决方案1】:

这可能是您的软件包版本控制的问题。 尝试为有类似错误的人提供this solution

【讨论】:

  • 感谢您的链接。这有帮助。找到了解决方案。我的 web.config 文件没有引用 newtonsoft.json 包,而我的 dll 项目引用了不同版本的 newtonsoft.json 包。一旦两个项目都引用了相同的版本,一切正常。但是,我不明白为什么它们必须是相同的版本?
【解决方案2】:

您是否打开了任何软件,即查看库或其中的文件夹? (如 NotePad++ 或其他)如果您将包直接包含在您的项目中,它会更好。也许您应该尝试找出您的工作室是否存在该文件(https://msdn.microsoft.com/en-us//library/system.io.file.exists(v=vs.110).aspx)。 (来自页面的示例)

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

也许此链接也有助于检查您的(工作室)访问权限: Checking file/folder access permission

【讨论】:

  • 该项目确实直接包含该包。我之前创建的 dll 库也有它引用的同一个包的副本。我插入了您提供的代码,它确实返回 File exists.
猜你喜欢
  • 2020-03-18
  • 1970-01-01
  • 2017-07-26
  • 2014-07-10
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多