除非进行安装,否则运行exe(将dll嵌入到exe)
本文关键字:exe dll 运行 安装 | 更新日期: 2023-09-27 17:58:19
可能重复:
.NET windows应用程序,它能被压缩成一个.exe吗?
我有一个项目,我在这个项目中使用了很多.dll文件。当我尝试在另一台计算机上运行我的项目时,它不起作用。因为我只使用.exe。我想我必须做一个安装项目。但我想运行我的程序,而不做安装项目。如何将.dll文件嵌入到我的exe中?我正在使用Visual Studio 2010。顺便说一句,对不起我的英语,但谷歌翻译的英语比我的差。谢谢
您只需要将dll文件和exe文件复制到同一目录中。并且您可以使用ILMerge util
您可以从msdn 下载
使用ILMerge.exe可以将exe和DLL合并在一起。
您也可以使用netz.exe作为替代exe压缩器&封隔器。
只需在Visual Studio中右键单击项目,选择项目属性->资源->添加资源->添加现有文件…并将以下代码包含到您的App.xaml.cs或等效程序中。
public App()
{
AppDomain.CurrentDomain.AssemblyResolve +=new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
string dllName = args.Name.Contains(',') ? args.Name.Substring(0, args.Name.IndexOf(',')) : args.Name.Replace(".dll","");
dllName = dllName.Replace(".", "_");
if (dllName.EndsWith("_resources")) return null;
System.Resources.ResourceManager rm = new System.Resources.ResourceManager(GetType().Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
byte[] bytes = (byte[])rm.GetObject(dllName);
return System.Reflection.Assembly.Load(bytes);
}
这是我最初的博客文章:http://codeblog.larsholm.net/2011/06/embed-dlls-easily-in-a-net-assembly/