快速提问;我知道我可以使用 ILMerge 将 .NET 4.0 及以下版本合并,但是如何在 .NET 4.7.2 上进行合并?
ILMerge 已经过时了,所以无法合并我的程序集(我有一个项目,以及用于设计的 FlatUI.dll。(Flat UI 从这里获得:https://github.com/skylerspark/WindowsFlat-Form-Data)
我听说你可以从 .NET DLL 中获取原始 C#,并将其作为源添加到项目中,以便合并它们。我想要这样做只是因为我需要制作一个独立的 EXE 文件。
答案1
我在这里完整记录了这种方法:https://skylerspark.github.io/Tutorials/MergingAssemblies
由于这些脚本的设置方式,在后续的 .NET 上合并文件比较困难,但是这是非常有可能的。
我收到通知并给出了一个非常古老的帖子的链接,该帖子介绍了 2 个脚本,这 2 个脚本可以将一个类分配给程序集“文件流”,并可以允许您创建链接到编译期间放置在 EXE 内的嵌入式 DLL 的隐藏文件流。
基本上你需要这两个脚本:程序.cs(这将替换默认的 Program.cs 和脚本中要求您填写的区域,您需要填写,否则就没用了。)并且嵌入程序集.cs(这将生成一个文件流,允许您将 dll 引用更改为编译期间放置在项目内部的 dll)
另外,如果您只是在 Program.cs 中复制 resource1 类,则可以将多个隐藏的 DLL 添加到 exe 中(出于性能原因不推荐)
您需要添加您的 DLL 作为参考,并将其作为现有文件添加到您的项目中(它只会进入您的项目主目录)
最后(如我制作的文档教程所示):
单击您在引用中放入的 DLL,然后将设置“CopyLocal”更改为“false”。
接下来,单击您添加为现有文件的 DLL,并将设置“构建操作”更改为“嵌入式资源”
最后,这对我来说非常完美,我能够成功地将 FlatUI.DLL 隐藏到一个 EXE 中并在 .NET 4.7.2(最新稳定的 .net)上运行它