【发布时间】: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] 属性。您需要它们的几率很高。