有誰知道如何在C#Visual Studio中創建相對引用,該鏈接將鏈接來自路徑windows\assembly\GAC
的DLL?
我的問題是,在我的電腦上,DLL位於GAC_MSIL\somePath\myDll.dll
,但在另一臺計算機上,它在GAC\somePath\myDll.dll
。
是否可以編寫一個引用(例如:%GAC%\somePath\myDll.dll
),它將查找我的GAC文件夾的路徑並引用它。位於變量GAC文件夾路徑中的參考DLL
0
A
回答
2
你只要引用它就是這樣。添加引用時,它會記住完整的程序集名稱,包括程序集名稱,版本和公鑰標記(用於強命名程序集)。在運行時,當您的應用程序嘗試加載該程序集時,加載器將首先檢查GAC,如果找到匹配項,它將從GAC加載。如果它不能找到GAC大會,將進一步走(如搜索私人bin文件夾等),你可以在這裏找到更多的細節:
http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.71).aspx
+0
感謝您發表此帖,很高興看到它的工作原理。最後我發現我正在編譯dll v.14,並且在第二個服務器上我有dll v.12,這就是爲什麼GAC沒有鏈接到它。 –
1
你只需要將DLL添加到你的項目引用。該程序將自動使用來自用戶GAC的正確DLL。這正是GAC(全局應用程序緩存)的用途。
如果在用戶機器上找不到該DLL,則需要先將其安裝到GAC中。這裏是如何做到這一點的例子(一個Excel DLL):
System.EnterpriseServices.Internal.Publish p = new System.EnterpriseServices.Internal.Publish();
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.ShowDialog();
string pathToDll = fb.SelectedPath;
string excel = t + @"\" + "Microsoft.Office.Interop.Excel.dll";
if (!File.Exists(excel))
{
using (FileStream fs = new FileStream(excel, FileMode.CreateNew))
{
fs.Write(Properties.Resources.microsoft_office_interop_excel_11, 0, Properties.Resources.microsoft_office_interop_excel_11.Length);
fs.Close();
}
}
Console.WriteLine("Register GAC...");
p.GacInstall(excel);
的DLL在此示例應用程序資源,並首次寫入到磁盤的再註冊到GAC。
相關問題
- 1. 設置.dll參考路徑
- 2. 查找ISM文件中使用的路徑變量的參考
- 3. MVC3參考安裝在GAC中的dll
- 4. 路徑變量:查找特定文件的文件夾路徑
- 5. 作爲DLL參考的Appdata文件夾
- 6. Dll導入路徑。如何獲得其位於其他文件夾中的DLL路徑
- 7. 參考.properties文件中的類路徑
- 8. DLL參考指向Temp文件夾類
- 9. 將我的DLL部署到GAC,參考其他不在GAC中的DLL
- 10. 關於參考路徑
- 11. 資源只有DLL - 文件夾,路徑
- 12. 是否有C#方法從參考路徑上下文件夾的數量?
- 13. 項目的參考DLL的路徑「魔法」,當DLL被刪除
- 14. 組組件參考路徑
- 15. GAC文件位於何處?
- 16. DLL的相對參考路徑,以防止複製dll
- 17. app.config文件中* .dll文件的路徑
- 18. Windows路徑變量 - 兩個文件夾匹配DLL - 首先選擇
- 19. 擊:變量文件路徑
- 20. 參考中沒有路徑
- 21. PHP中的變量require_once文件路徑
- 22. 文件夾路徑
- 23. ASP經典:讓位於行政文件夾中的文件的當前路徑
- 24. Maven的參考文件夾
- 25. XCode的SharedPrecompiledHeaders文件夾的路徑變量
- 26. laravel中的多路徑文件5 /多個路徑文件夾
- 27. 環境變量路徑中的文件搜索「路徑」
- 28. 變化MATLAB文件夾路徑
- 29. 變化.androidstudio2.1文件夾路徑
- 30. 獲取列出的參考文件的路徑csproj文件
這只是不是GAC是如何工作的。如果程序集是.NET 1.x程序集,則該程序集位於GAC子目錄中。 GAC_MSIL是.NET 2+程序集的子目錄。你永遠不會將自己作爲GAC文件夾引用,這是CLR找回程序集的工作。這是一個真正的問題還是隻是好奇? –