我在Windows窗體中使用自定義控件。自定義控件的dll安裝在GAC中。我已將此自定義控件添加到我的工具箱中。從winforms工具箱添加控件拋出錯誤
當我拖到從工具箱到的WinForms設計師,我得到以下錯誤此自定義控件:
Failed to create component 'UserControl'. The error message follows: 'System.Runtime.InteropServices.COMException (0X80004005): Error HRESULT E_FAIL has been returned from a call to a component.
at VSLangProj.References.Add(String bstrPath) ...................................
這工作:
1)將裝配到工具箱和拖動一個局部引用它的形式工作正常。
2)添加到項目中也解決了問題
問題DLL的引用:
我怎樣才能讓我的用戶控制顯示在設計時組件添加到GAC?是否錯過了AssemblyInfo.cs文件中的任何參數或者我錯過了什麼。
編輯:
在進一步的分析,我發現,如果DLL中不存在所提供的位置會發生這種錯誤。例如,如果我將d:\Location1\UserControl.dll
的程序集添加到工具箱中,則在拖動控件時,如果在將該DLL添加到工具箱後將其從該位置移除,則會引發此異常。
因此,我使用visual studio developer命令提示符檢查了這個程序集是否仍然存在於GAC中,並且發現該dll存在於GAC中。但仍然無法找到爲什麼異常拋出
在Visual Studio可以找到它們的地方提供依賴的DLL當然是一個很難的要求。摸索這通常不會產生這樣一個絕望的模糊例外。如果您想深入研究,則啓動Visual Studio的另一個實例,使用工具+附加到進程以將其附加到第一個實例,使用Debug + Exceptions,Thrown複選框在拋出異常時強制調試器進入。 Call Stack窗口應該提供一些提示,請記住它被埋在設計器代碼中,因此它不一定是水晶。 – 2014-10-16 13:34:42
@HansPassant,感謝您的建議將嘗試 – Kira 2014-10-17 03:55:50
@HansPassant,它不會在這個設計時間中斷例外 – Kira 2014-10-17 04:05:05