从.NET应用程序制作单个可执行文

时间:2015-10-12 12:07:34

标签: c# visual-studio exe

我有一个关于.NET应用程序的问题以及随应用程序发布而生成的可执行文件。现在我已经完成了我的应用程序,并且它按预期工作,我知道在Release文件夹中你必须进行最终的应用程序。它可以运行,你可以运行它,但我的问题是分发。

它生成了很多额外的文件,可能正是因为它需要运行。但是有可能我可以将所有东西都包装在一个包中,这样我就可以分发一个~2-3mb的文件而不是一个包含每个文件的zip文件。

我不想为我的应用程序使用设置,因为它非常小,独立应用程序对我来说更好。提前谢谢!

编辑:它主要是DLL和XML文件,请看这张图片:http://imgur.com/BxeZhaz

3 个答案:

答案 0 :(得分:3)

你可以使用ILmerge。这是一个来自https://www.nuget.org/packages/ilmerge的nuget包。它可以将所有库和* .exe组合到一个程序集中。它是可靠的,您可以将其添加为构建事件的一部分。特别是在发布模式下作为Post Build Event。

答案 1 :(得分:0)

这是我个人用于其他应用程序文件(即数据库脚本,图像,词典或任何数据文件)。我没有用程序集尝试这种方法。

如果您不想使用安装程序,则可以选择将外部文件作为可执行应用程序资源嵌入,并在首次运行时将其解压缩到应用程序或临时目录。

  • 将资源文件(即Files.resx)添加到您的项目
  • 在Visual Studio资源编辑器中使用“添加现有文件”选项
  • 标记资源(即myResourceLabel);确保Visual Studio将其视为“FILE”资源,而不是“IMAGE”(使用扩展名“.dat”作为文件扩展名就足够了)
  • 从代码的角度来看,这种“FILE”资源被视为字节数组,因此您可以轻松地将资源数据提取到文件中,即:

if (!System.IO.File.Exists("myfile.dat"))
  System.IO.File.WriteAllBytes("myfile.dat", Files.myResourceLabel);

答案 2 :(得分:0)

我强烈建议使用Costura.Fody - 迄今为止在装配中嵌入资源的最佳和最简单的方法。它可以作为NuGet包使用。

Install-Package Costura.Fody