有没有一种方法可以将多个 .NET 程序集打包到一个 dll 中?

发布于 2024-08-02 14:38:13 字数 183 浏览 5 评论 0原文

我希望将我的组件/程序集从源代码的角度清楚地分开,但在某些情况下(可能与扩展无关)我还需要将它们打包在同一个 dll 中。

是否可以将多个 .NET 程序集打包到一个 dll 中?如果是这样,怎么做?

如果可能的话,您认为这是一个好主意吗?为什么?

任何帮助表示赞赏!

I'd like to keep my components/assemblies clearly separated from a source code point of view but I also need in some circumstances (probably not relevant to expand) to package them in the same dll.

Is it possible to package a number of .NET assemblies in a single dll? If so, How?

IF possible, do you think it is a good idea? Why?

Any help appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

热风软妹 2024-08-09 14:38:13

查看这篇文章:使用 ILMerge 合并 .NET 程序集


如您所知,传统的链接
不再需要目标代码
。网。 .NET 程序通常会
由多个部分组成。一个典型的
.NET 应用程序由
可执行程序集,一些程序集
在程序目录中,还有一些
全局装配中的装配
缓存。当程序运行时,
运行时将所有这些部分组合成一个
程序。编译时链接是没有
不再需要。

但有时,确实如此
有助于将程序的所有部分组合起来
需要执行到一个单一的
集会。例如,您可能想要
简化您的部署
通过组合程序应用,
所有必需的库,以及所有
资源,到单个 .exe 文件中。

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb

ilmerge /target:winexe /out:SelfContainedProgram.exe 
        Program.exe ClassLibrary1.dll ClassLibrary2.dll

Check out this article : Merging .NET assemblies using ILMerge


As you know, traditional linking of
object code is no longer necessary in
.NET. A .NET program will usually
consist of multiple parts. A typical
.NET application consists of an
executable assembly, a few assemblies
in the program directory, and a few
assemblies in the global assembly
cache. When the program is run, the
runtime combines all these parts to a
program. Linking at compile time is no
longer necessary.

But sometimes, it is nevertheless
useful to combine all parts a program
needs to execute into a single
assembly. For example, you might want
to simplify the deployment of your
application by combining the program,
all required libraries, and all
resources, into a single .exe file.

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb

.

ilmerge /target:winexe /out:SelfContainedProgram.exe 
        Program.exe ClassLibrary1.dll ClassLibrary2.dll
情泪▽动烟 2024-08-09 14:38:13

ILMerge 可以将两个程序集合并为一个。

请参阅此处了解信息(示例适用于跨语言,但它适用于任何工具构建了组件)。

显然,对各个程序集(合并前)的任何依赖项都需要更新/重定向。

ILMerge can merge two assemblies into one.

See here for information (the examples are for cross language, but it will work whatever tools built the assemblies).

Obviously any dependencies on the individual assemblies (pre-merge) will need to be updated/redirected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文