【问题标题】:Clickonce Deployment Size Ballooned After Adding NuGet Package添加 NuGet 包后 Clickonce 部署大小膨胀
【发布时间】:2019-09-06 14:04:26
【问题描述】:

我正在对我在 VS2017 中创建的 Winforms 应用程序之一做一些工作。我在做VS2019的新工作。该应用程序包含 Winforms 报告查看器控件,该控件在 VS2019 中无法正常工作,因此我按照this post 中给出的建议让一切恢复正常。这意味着,将 nuget 包添加到项目中,并直接从项目目录中的“包”文件夹中引用所需的库。

应用程序现在运行良好,但是当我尝试使用 clickonce 发布时出现问题。在“发布”>“应用程序文件...”下,有比以前更多的引用(没有 nuget 包),当我发布时,我的部署大小已经膨胀到 80+mb。这是一个全球应用程序,通过 WAN 复制 80+mb 可能会有点耗时。

如果有人能建议我如何恢复更小的部署规模,我们将不胜感激。谢谢。

应用程序是:.NET Framework 4.5,Winforms,带有 NuGet 包:Microsoft.ReportingServices.ReportViewerControl.Winforms 和 Microsoft.SqlServerTypes

【问题讨论】:

  • 关于 Nuget 的事情是它将下载并安装 .dll 和所有依赖项。您可能无法安全地删除任何文件,但如果可以的话,您可以制作一个脚本来仅打包必要的部署文件并仅通过网络复制这些文件。如果您使用的是 .net Core,那么您将需要更多的 winform 依赖项。
  • 好的,感谢您的信息。
  • 还没有回去工作:)
  • 好的,有任何更新请随时告诉我:)

标签: c# visual-studio winforms nuget clickonce


【解决方案1】:

如果有人能建议我如何恢复更小的部署规模, 将不胜感激。谢谢。

对于这个问题,我认为您可以在发布项目之前随意删除额外的包以减少部署规模。

让我们检查Microsoft.ReportingServices.ReportViewerControl.Winforms包的lib文件夹中的内容:

很明显,它有十个语言包,其中包含不同文化的程序集。所有十个语言包都有这四个程序集:

当您在项目中引用此 nuget 包并构建项目时,它将使用基本英文版本。(在我的机器上使用英文)

但是当我们使用 ClickOnce 发布它时,它会获取 lib 文件夹中的 all 程序集,这就是为什么your deployment size has ballooned to 80+mb 的主要原因。因此,如果您使用的是英语环境或其他语言环境,则可以在 Project=>Properties=> Publish 中的 Application Files setting 中不使用的那些语言包中排除 不必要的 程序集。见:

我排除了我不需要的额外的,它在我的机器中减少了近 40mb 大小。另外,类似的问题参见here。希望对你有帮助:)

【讨论】:

  • 我能够删除一些语言,这有助于节省部署规模,谢谢!
猜你喜欢
  • 2021-09-19
  • 2017-07-03
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多