是否可以将预先存在的DLL嵌入到编译后的C#可执行文件中(这样您只有一个文件要分发)?如果有可能,我们将如何着手做这件事呢?
通常情况下,我对把DLL放在外面,让安装程序来处理一切都很好,但有几个同事问过我这个问题,我真的不知道.
是否可以将预先存在的DLL嵌入到编译后的C#可执行文件中(这样您只有一个文件要分发)?如果有可能,我们将如何着手做这件事呢?
通常情况下,我对把DLL放在外面,让安装程序来处理一切都很好,但有几个同事问过我这个问题,我真的不知道.
我强烈建议使用Costura.Fody——到目前为止,这是在程序集中嵌入资源的最好、最简单的方法.它以NuGet套餐的形式提供.
Install-Package Costura.Fody
将其添加到项目后,它将自动将复制到输出目录的所有引用嵌入到程序集中.您可能希望通过向项目中添加目标来清理嵌入的文件:
Install-CleanReferencesTarget
您还可以指定是包含pdb、排除某些程序集,还是动态提取程序集.据我所知,也支持非托管程序集.
Update
目前,一些人正试图增加support for DNX人.
Update 2
对于最新的Fody版本,您需要安装MSBuild 16(因此使用Visual Studio 2019).Fody版本4.2.1将执行MSBuild 15.(参考:Fody is only supported on MSBuild 16 and above. Current version: 15)