將DLL放入到資源中,運行時自動加載的小例子
更新時間:2013年10月16日 15:23:06 作者:
這篇文章介紹了將DLL放入到資源中,運行時自動加載的小例子,有需要的朋友可以參考一下
今天在看到 一個小軟件,考勤用的 AttendanceSheet_V_1_2,只有一個EXE文件,綠色的隨便考到哪里都可以運行。
順手反編譯后發(fā)現(xiàn),他將需要的DLL也放入到資源文件了,在啟動的時候自動加載:

代碼如下:
復制代碼 代碼如下:
internal static class Program
{
// Methods
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.AssemblyResolve += delegate (object sender, ResolveEventArgs senderArgs) {
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string name = new AssemblyName(executingAssembly.FullName).Name;
string str2 = new AssemblyName(senderArgs.Name).Name;
string str3 = name + "." + str2 + ".dll";
using (Stream stream = executingAssembly.GetManifestResourceStream(str3))
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
return Assembly.Load(buffer);
}
};
Application.Run(new 考勤表生成工具());
}
}
相關(guān)文章
C#開發(fā)Winform實現(xiàn)窗體間相互傳值
這篇文章介紹了C#開發(fā)Winform實現(xiàn)窗體間相互傳值的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03C#中結(jié)構(gòu)體定義并轉(zhuǎn)換字節(jié)數(shù)組詳解
在寫C#TCP通信程序時,發(fā)送數(shù)據(jù)時,只能發(fā)送byte數(shù)組,處理起來比較麻煩不說,如果是和VC6.0等寫的程序通信的話,很多的都是傳送結(jié)構(gòu)體,在VC6.0中可以很方便的把一個char[]數(shù)組轉(zhuǎn)換為一個結(jié)構(gòu)體,而在C#卻不能直接把byte數(shù)組轉(zhuǎn)換為結(jié)構(gòu)體,要在C#中發(fā)送結(jié)構(gòu)體,應該怎么做呢?2017-11-11