C# 嵌入dll 的方法
在很多時候我們在生成C#exe文件時,如果在工程里調(diào)用了dll文件時,那么如果不加以處理的話在生成的exe文件運行時需要連同這個dll一起轉(zhuǎn)移,相比于一個單獨干凈的exe,這種形式總歸讓人不爽,那么有辦法讓生成的軟件中直接就包含這個dll文件嗎,這樣就可以不用dll跟著exe走了,避免單獨不能運行的情況。
答案是有的!

在工程項目目錄下找到Resources.resx文件并點擊,然后按下面操作,添加資源,將你要加入的dll添加進(jìn)來。

操作完成后,就會在下面的內(nèi)容框里看到你添加進(jìn)來的dll。

然后在工程中加入下面這個函數(shù)代碼:
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);
}
在InitializeComponent();之前調(diào)用。這樣生成的exe就包含這個dll文件啦。
public Form1()
{
this.StartPosition = FormStartPosition.CenterScreen;
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
InitializeComponent();
}
總結(jié)
以上所述是小編給大家介紹的C# 嵌入dll 的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
- C#調(diào)用C類型dll入?yún)閟truct的問題詳解
- C# 添加對System.Configuration.dll文件的引用操作
- 關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題
- vs2019 實現(xiàn)C#調(diào)用c++的dll兩種方法
- C#中托管DLL和非托管DLL的區(qū)別詳解
- VSCode調(diào)試C#程序及附缺失.dll文件的解決辦法
- Qt程序中調(diào)用C#編寫的dll(推薦)
- C#調(diào)用Win32的API函數(shù)--User32.dll
- C#調(diào)用C++dll方法步驟
- C# [ImportDll()] 知識小結(jié)
- C#如何通過probing指定dll尋找文件夾詳解
- C#調(diào)用易語言寫的Dll文件方法
- C#使用反射(Reflect)獲取dll文件中的類型并調(diào)用方法
- c#調(diào)用c語言dll需要注意的地方
相關(guān)文章
C#請求http向網(wǎng)頁發(fā)送接收數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了C#請求http向網(wǎng)頁發(fā)送數(shù)據(jù)、網(wǎng)頁接收的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
C# mysql 插入數(shù)據(jù),中文亂碼的解決方法
用C#操作mysql時, 插入數(shù)據(jù)中文都是亂碼,只顯示問號,數(shù)據(jù)庫本身使用的是utf-8字符2013-10-10
.NET使用IResourceMonitor實現(xiàn)獲取資源信息
在 Microsoft.Extensions.Diagnostics.ResourceMonitoring 包提供了一系列定制 API,專用于監(jiān)視 .NET 應(yīng)用程序的資源利用率,本文將利用IResourceMonitor來實現(xiàn)獲取資源狀態(tài)信息,感興趣的可以了解下2024-01-01

