如果一个应用程序中调用一个DLL文件,能不能在程序发布的时候将这个DLL文件也编译到程序中去! Dll是“动态连接库”,是在运行时被调用,如果编译时被调用就失去代码重用的意义了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ???DLL文件也编译到程序中去?那就不是动态连接了! 在生成安装包时可以把该dll文件包括进去 没必要吧。将DLL文件拷贝到EXE文件末尾,执行时再生成临时的DLL(从EXE文件末尾分离开来) 不可能,去把dll的原代码获得,然后在你自己的程序中实现,呵呵 因为这个DLL文件里包含了所有的操作!如果用户有了这个DLL就可以实现 所有的操作了! 可以在写代码时就与程序一起自动编辑生成dll,而不是把dll编辑进程序中去. 好象不行啊,我是这样做的:1. 用VS IDE 打开->文件 打开EXE。2. 添加资源,添加DLL。DLL是包含了,可以运行通不过。还有一个办法是象字符串表一样添加到资源包,不过我没试过。如果你解决了这个问题,希望能够告诉我[email protected] 在程序中调用DLL文件,在制作安装包的时候安装文件生成程序会直接将这个DLL文件集成到安装包中。如果将DLL文件中有用的程序编译到程序中,就失去了DLL中这个动态的意义了。 用ildasm.exe工具反汇编DLL文件,生成IL代码文件,在将这个文件加入到你的工程中。 在程序中调用DLL文件,在制作安装包的时候安装文件生成程序会直接将这个DLL文件集成到安装包中。如果将DLL文件中有用的程序编译到程序中,就失去了DLL中这个动态的意义了。 如果你用的dll也是.net framework写的话,可以把它作为资源编译到程序中,在程序运行的时候把它读出来。再通过reflection调 用dll。下面的代码是用来支持xp的menifest的代码片断。你也可以选择不把它写到磁盘上,直接在内存中使用。public ManifestMaker(string sNameSpace) { if (File.Exists((Application.ExecutablePath + ".manifest")) != true) { Assembly ThisAssembly; ThisAssembly = Assembly.GetAssembly(this.GetType()); StreamReader read = new StreamReader(ThisAssembly.GetManifestResourceStream(sNameSpace + ".Manifest.txt")); StreamWriter write; write = File.CreateText(Application.ExecutablePath + ".manifest"); while (read.Peek() != -1) { String x; x = read.ReadLine(); write.WriteLine(x); } read.Close(); write.Close(); System.Diagnostics.Process.Start(Application.ExecutablePath); bRestarting = true; } } 要翘翘了,这几天老是胃疼。。。 关于2条sql语句共用1个函数执行事务回滚的问题,迷糊中! C# webbrowser 安全性问题 winForm在什么时候调用dispose方法? 谁有 “计算机系统结构-量化研究方法"电子版 .net有一个警告???? C/S程序数据库连接字符串的问题 flashget点鼠标左键选择“使用flashget下载”时,他是如何得到下载地址的? 求助:多线程数据更新 问一个关于ListBox的问题,谢谢! 请问在web方式下,可以调用api函数吗?如果能请实例,记住不是在windows方式,而是在web方式下 如何编写停靠窗口,有源码更好.
DLL文件也编译到程序中去?那就不是动态连接了!
将DLL文件拷贝到EXE文件末尾,执行时再生成临时的DLL(从EXE文件末尾分离开来)
你的工程中。
public ManifestMaker(string sNameSpace)
{ if (File.Exists((Application.ExecutablePath + ".manifest")) != true)
{
Assembly ThisAssembly;
ThisAssembly = Assembly.GetAssembly(this.GetType()); StreamReader read = new StreamReader(ThisAssembly.GetManifestResourceStream(sNameSpace + ".Manifest.txt"));
StreamWriter write;
write = File.CreateText(Application.ExecutablePath + ".manifest"); while (read.Peek() != -1)
{
String x;
x = read.ReadLine();
write.WriteLine(x);
}
read.Close();
write.Close();
System.Diagnostics.Process.Start(Application.ExecutablePath);
bRestarting = true;
}
}