c# - 如何使 .NET 类库可链接(无 DLL)

标签 c# .net

在 C++ 的“过去”,创建(类或其他)库有两种选择 - DLL 或静态可链接。

我的解决方案中有一些项目是“共享”库,供同一解决方案中的两个或多个其他项目使用。现在,它们被导出为 DLL,然后被忠实地复制到每个使用它们的实际可执行文件的“bin”文件夹中。

我厌倦了看到所有这些 DLL 到处乱跑(对于我的库和 Nuget 提供的第三方库),如果有 .NET,我实际上更愿意将它们“链接到”可执行文件这样做的方式(只是将代码放在单独的文件夹中并将它们包含在所有项目中,这对于通过检查解决方案资源管理器使正在发生的事情一目了然来说有点丑陋)。

那么,“链接”库是否已经随着 .NET 消失了?如果是这样,是否至少有一种注册程序集的方法(过去我们用来注册 COM DLL 的方法)以便在解决方案中安装了多个可执行文件的情况下只有一个 DLL 副本在多个地方复制相同的 DLL?

最佳答案

AFAIK .NET(和 CLR)没有静态链接库的概念。

正如 SLaKs 指出的那样,有一些工具可以欺骗 IL,但是您需要权衡这种增加的复杂性与减少 float DLL 文件数量的好处之间的成本;真的那么重要吗?

相反,您可以使用“共享项目”,至少从 Visual Studio 2015 开始是这样。

Shared Project

它只是充当通用代码/资源的可引用容器,这非常接近您希望实现的结果。

参见“What is the difference between a Shared Project and a Class Library in Visual Studio 2015?”。

根据 SLaKs,另见“Static Linking of libraries created on C# .NET”。

关于c# - 如何使 .NET 类库可链接(无 DLL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47914887/

相关文章:

.net - 使用 NewRelic 对 .Net 中的泛型类进行自定义检测

.net - EF 4.1,代码优先 : Eager loading of cascading collections

c# - WPF Key 是数字或数字

c# - 通过反射获取字段

c# - 无法在 WCF 中发送更大的字节数组

无工作可做的 C# Windows 服务

.net - MicrosoftGraph API 无法将消息标记为已读

c# - 通过安装程序设置模拟属性会导致 'Expression is not a method invocation'

c# - 使用cancelingtoken为用户定义的功能设置超时

c# - 索引超出了 lambda 表达式 linq 中的数组边界