我有一個應用程序,它引用程序集「Library.dll」。我將此程序集的名稱更改爲「Library222.dll」,現在我的應用程序失敗,出現異常「無法加載文件或程序集...」 如何在運行時指定此dll文件的新名稱「Library222.dll」 ? 我發現這個問題Set Custom Path to Referenced DLL's? 但有指定文件夾到DLL,而不是文件名。我沒有改變DLL的路徑,我改變了文件名,所以我需要指定文件名。將自定義文件名設置爲被引用的dll
2
A
回答
4
您不能通過重命名程序集來實現此目的。
程序集的名稱在編譯時寫入其元數據中。
更改文件名稱時,實際上並未更改元數據中的名稱。
您必須重新引用Library.dll,並引用Library222.dll,然後重新編譯。
2
我發現了這個簡單的解決方案!事件AppDomain.AssemblyResolve
已經幫我解決這個問題
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
namespace TestAsembly
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
//bla-bla...
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.StartsWith("Library,"))
{
Assembly asm = Assembly.LoadFrom("Library222.dll");
return asm;
}
return null;
}
}
}
2
試試這個去項目屬性 - >應用程序,然後更改大會名稱字段。在早期版本中,它可能位於不同的地方,但我認爲Assembly Name
字段仍然是您正在尋找的字段。
+0
感謝您的回覆,但我想在運行時做到這一點,我已經找到了解決方案(請參閱下面我自己的回覆) –
相關問題
- 1. 如何爲dll文件設置自定義圖標?
- 2. 設置自定義文件名與JSZIP
- 3. 設置自定義文件名
- 4. 設置在枚舉值自定義屬性中引用的DLL
- 5. 自定義設置文件
- 6. 當我將selectionStyle設置爲UITableViewCellSelectionStyleNone時,自定義UITableViewCell被禁用。
- 7. Log4Net:從引用DLL的自定義appender被忽略
- 8. SilverStripe 3.4自定義報告 - 將文件名設置爲自定義報告中的鏈接,以便於編輯
- 9. 將XML文件設置爲自定義視圖?
- 10. 將log4net文件路徑設置爲自定義路徑
- 11. 具有服務引用的Dll應該讀取自定義配置文件
- 12. 如何使用mqseries.net dll設置mqclient.ini的自定義位置?
- 13. 將圖標設置爲自定義QFontDialog
- 14. 將exclusiveTouch設置爲自定義UITableViewCell
- 15. 將自定義字體設置爲JLabel
- 16. 將ContentControl設置爲自定義圖像
- 17. 如何設置WiX自定義引導程序的EULA文件?
- 18. 爲自定義UIBarButtonItem設置文本
- 19. 自定義ListView - 如何將attrs.xml設置爲命名空間
- 20. 將文本框設置爲文件名
- 21. 將圖像保存爲具有自定義名稱的自定義文件夾
- 22. 將自定義設置添加到boot2docker配置文件
- 23. 無法爲mysql docker容器設置自定義配置文件
- 24. 如何爲自定義控件設置名稱空間
- 25. 在Windows上存儲自定義DLL文件的位置?
- 26. 如何爲某些用戶設置自定義的用戶配置文件?
- 27. 自動從被引用的DLL
- 28. 如何將索引設置爲當前視頻文件名?
- 29. 如何使用XmlSerializer將自定義值設置爲xml頭文件
- 30. 在axis2中使用自定義wsdl文件時將參數值設置爲空
我不需要在編譯時將名稱寫入其元數據中。還有一個名字仍然是「Library.dll」。我需要在運行時設置新的程序集名稱,但是在編譯該項目之前,您提供了我自己修改的名稱...... –