【问题标题】:How to determine which "System" dlls need to be distributed with my .Net 4.8 Project如何确定我的 .Net 4.8 项目需要分发哪些“系统”dll
【发布时间】:2021-09-02 05:56:26
【问题描述】:

我有一个针对 .Net 4.8 的项目,它使用以下 DLL ...

  • Microsoft.Win32.Registry
  • System.Security.Principal.Windows
  • System.ServiceProcess.ServiceController

这些引用不会显示在项目的引用列表中,但是会在构建项目/解决方案时复制到相应的 /bin 文件夹中。

这些 dll 是在 .Net 4.8 等中分发的,还是我需要在我的发布包中分发它们?如果是这样,为什么? 如果没有,我如何使用 C# 以编程方式确定特定 dll 是否包含在 .Net 4.8 分发版中,以便我可以将其从分发包中删除?

编辑 1: 对我来说不明显的是为什么这些 dll 首先被复制到 /bin 文件夹中。如果它们作为 .Net 4.8 的一部分分发,那么这似乎是多余的和误导性的。

编辑 2: 鉴于这些 dll 可能已经存在于最终用户的机器上,而不是它们包含在 .Net 4.8 发行版中,如果它们不在另一个潜在的最终用户上,仅仅不将它们包含在我的包中可能会很快导致灾难性后果机器。

【问题讨论】:

  • “我需要在我的发行包中分发它们吗?”不,这就是使用 .NET 框架的意义所在。只需将您的框架安装在目标系统上即可。
  • “我如何以编程方式确定特定 dll 是否包含在 .Net 目标分发中,以便我可以将其从分发包中删除?” - 我不想听起来很滑稽,但是您可以在运行 没有文件后查看所需的功能是否有效
  • 它们不是框架程序集,不会在用户的机器上可用。获取它们的基本方法是通过 .NETStandard 库,可能使用 Nuget 检索。它们是胶水,非常小,具有将类型重定向到实现该类型的特定框架程序集的 [TypeForwardedTo] 属性。您需要它们的几率很高。

标签: c# .net dll


【解决方案1】:

这个answer regarding the dll's included with .Net distributions 回答了确定分发哪些dll 和this answer helps explain where these dll's originated

关于为什么这些 dll 存在,我期待一个解释,因为我觉得它们没有任何有价值的目的!

Hans Passant 上面的评论也很好地解释了这个场景,如果他选择回答,就会被标记为答案。

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多