我使用C#开发了一个小项目,让一切都运行得很好。 唯一的问题是这个应用程序将定期通过电子邮件发送,因此我正在尝试将所有文件组合为一个可执行文件。用户只需打开并查看一个可执行文件,它将加载所需的文件并启动应用程序。
该应用不使用任何外部库。唯一的.dll
文件适用于IWshRuntimeLibrary
。
需要汇编的文件:
请注意,我知道可以删除一些文件(svhost等)。但是这没有用,因为我还有多个文件。我也尝试过一些免费的在线汇编程序,但没有一个能够运行。
答案 0 :(得分:0)
在解决方案资源管理器中,选择Interop.IWshRunctime...
的引用,然后在属性窗口中,将Embed Interop Types
的值更改为True
。
这不会为互操作类型生成单独的dll。
PS:这不是通用解决方案,但仅适用于Interop Type。
答案 1 :(得分:0)
我过去曾使用https://github.com/Fody/Costura。 Nuget安装Install-Package Costura.Fody
(https://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"