使用 NewtonSoft.Json 发布 C# 应用程序

Publishing a C# app with NewtonSoft.Json

我一直在开发具有一些新功能的控制台应用程序,主要使用 NewtonSoft.Json nuget 包。对于分发,我一直在进入 bin 文件夹 -> 发布,然后 copy/pasting 可执行文件分发给我的同事。但是,由于我使用了 NewtonSoft.Json 包,我的同事将在他们的机器上收到以下错误。

System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Jso n, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified. File name: 'Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30 ad4fe6b2a6aeed'

我该如何克服这个问题?我如何让我的同事能够在他们自己的机器上支持 NewtonSoft.Json?

就像 ragerory 在您的问题评论中所说,这些错误将在缺少对与可执行文件一起部署的外部依赖项的引用时发生。

您可以执行以下操作来避免依赖项加载问题:

  1. 分发您的可执行文件以及执行所需的所有依赖项
  2. 使用第三方软件"merge"您与可执行文件的依赖关系

如果您熟悉 NuGet, you could also use Costura.Fody,这是我用来在构建时将引用作为资源嵌入的工具。它避免使用外部工具,如 ILMerge,我选择它是因为它可以轻松集成到已经使用 NuGet 包的项目中。

我的问题是缺少某些配置,如果在源代码管理中提交期间未签入,则可能会发生这种情况。

我将 Nuget 用于包,因此重新安装包对我有用。我确实升级到不同的版本,但这没有用 - 它必须重新安装。

Update-Package -Id Newtonsoft.Json -reinstall