【问题标题】:Visual Studio 2019/.NET 5: Compiling Single Project with No Dependencies Creates Application DLLVisual Studio 2019/.NET 5:编译没有依赖关系的单个项目会创建应用程序 DLL
【发布时间】:2021-06-30 00:36:48
【问题描述】:

我用一台新笔记本电脑从 VS15 迁移到 VS19,我的新项目是一个单独的 Windows Forms 项目,它将在客户端的服务器上提取指标、统计信息和一些其他信息,并生成一个它们发回的输出文件.要求是单个 EXE。

但是,由于我的所有代码都在一个项目中,并且在 .NET 本身之外没有依赖项,因此我得到了 [application].exe 和 [application].dll。这是不可接受的,我找不到禁用此功能的选项。

有谁知道这是在哪里,还是我必须回到 VS 2015?

谢谢。

【问题讨论】:

  • 请解释为什么“这是不可接受的”?
  • 除了完全没有必要之外,它还消除了我希望如何发布项目的控制权。在这种特定情况下,当这个项目的重点是简单/易用时,强迫多个客户端摸索多个不必要的文件是不合理的。

标签: visual-studio-2019 .net-5


【解决方案1】:

这是 .NET Core / .NET 5 的新常态:.exe 是启动 .NET 运行时的包装器,您的所有应用程序代码都在 .dll 中。

你有两个选择:

  • 您可以返回到 .NET Framework 4.x(无需为此降级 VS - 您可以将 VS2019 与针对 .NET 4.x 的 C# 9 一起使用)
  • 您可以查看 .NET 5 single-file deployment。请注意,这将需要“发布”步骤来生成单个文件; “构建”步骤的正常结果仍然是 .exe+.dll。
    • 您可以使用“依赖于框架”的发布来避免在您的应用程序中包含 .NET 运行时(这样可以避免单独的本机运行时 dll)
    • 或者您可以使用 /p:IncludeNativeLibrariesInSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true 强制将本机运行时 dll 包含在 .exe 文件中。

【讨论】:

  • 常规单文件发布会在附近放置几个程序集。如果您想只生成一个文件,请阅读此问题stackoverflow.com/questions/66760154/…
  • 谢谢,丹尼尔。我现在在 build 文件夹中也有几个 .net dll。我本来打算忽略这些,因为目标机器已经有.net了……但是如果现在需要这些来运行exe,那就更糟了。我对 VS19 和 .NET5 整体感到非常失望,所以我不妨擦掉这台笔记本电脑并重新开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
相关资源
最近更新 更多