【问题标题】:Publishing a C# app with NewtonSoft.Json使用 NewtonSoft.Json 发布 C# 应用程序
【发布时间】:2016-01-05 17:38:50
【问题描述】:

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

System.IO.FileNotFoundException: 无法加载文件或程序集 'Newtonsoft.Jso n,版本=7.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed' 或其中之一 它的依赖关系。该系统找不到指定的文件。 文件名:'Newtonsoft.Json,版本=7.0.0.0,文化=中性,PublicKeyToken=30 ad4fe6b2a6aeed'

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

【问题讨论】:

  • 顺便说一句,我正在使用 Visual Studio Express 2013
  • Here 是有关如何部署应用程序以使其包含所有正确依赖项的一些信息。
  • 那是因为你只是给他们可执行文件。所有二进制文件也应该发布在该发布文件夹中。您可以按原样压缩它,也可以创建一个安装项目。
  • @Jdsfighter 感谢您的输入,我找到了解决方案:ILMerge

标签: c# visual-studio visual-studio-2013 json.net publishing


【解决方案1】:

就像 ragerory 在您的问题 cmets 中所说的那样,这些错误将发生在对与可执行文件一起部署的外部依赖项的任何缺少引用的情况下。

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

  1. 分发您的可执行文件以及执行所需的所有依赖项
  2. 使用第三方软件将您的依赖项与可执行文件“合并”

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

【讨论】:

    【解决方案2】:

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

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

    Update-Package -Id Newtonsoft.Json -reinstall
    

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      相关资源
      最近更新 更多