将文件打包成一个可执行文件(C#)

时间:2016-08-22 08:09:28

标签: c# .net visual-studio

我使用C#开发了一个小项目,让一切都运行得很好。 唯一的问题是这个应用程序将定期通过电子邮件发送,因此我正在尝试将所有文​​件组合为一个可执行文件。用户只需打开并查看一个可执行文件,它将加载所需的文件并启动应用程序。

该应用不使用任何外部库。唯一的.dll文件适用于IWshRuntimeLibrary

需要汇编的文件:

Files

请注意,我知道可以删除一些文件(svhost等)。但是这没有用,因为我还有多个文件。我也尝试过一些免费的在线汇编程序,但没有一个能够运行。

4 个答案:

答案 0 :(得分:0)

在解决方案资源管理器中,选择Interop.IWshRunctime...的引用,然后在属性窗口中,将Embed Interop Types的值更改为True

这不会为互操作类型生成单独的dll。

  

PS:这不是通用解决方案,但仅适用于Interop Type。

答案 1 :(得分:0)

我过去曾使用https://github.com/Fody/Costura。 Nuget安装Install-Package Costura.Fodyhttps://www.nuget.org/packages/Costura.Fody/

关于它从源头做什么的描述:

  

将所有已标记为&#34的程序集(和pdbs)复制到本地"并将它们作为资源嵌入目标程序集中。

答案 2 :(得分:0)

实际上,您正在寻找一种方法将一些程序集和资源合并到一个可执行文件中 Custora.Fody,ILMerge,具有汇编合并功能的混淆器是可用于此目的的一些示例。

你可以在这里找到一些答案:
Embedding DLLs in a compiled executable
How to merge multiple assemblies into one?
List of obfuscators for .NET

答案 3 :(得分:0)

如果这不是关于安全原因,我将创建目录结构如下:

- root
└ Startup.bat
└ lib
    └ DiagnosticsSwitch.exe
    └ DiagnosticsSwitch.exe.config
    └ DiagnosticsSwitch.exe.manifest
    └ Interop.IWshRuntimeLibrary.dll

在Startup.bat内部

"lib/DiagnosticsSwitch.exe"