我在Windows窗体中使用自定义控件。自定义控件的dll安装在GAC中。我已将此自定义控件添加到我的工具箱中。
当我将此自定义控件从工具箱拖到winforms设计器时,我收到以下错误:
无法创建组件'UserControl'。错误消息如下: 'System.Runtime.InteropServices.COMException(0X80004005):错误 HRESULT E_FAIL已从对组件的调用返回。
at VSLangProj.References.Add(String bstrPath) ...................................
这有效:
1)将工具箱的本地参考添加到工具箱并将其拖到表单中是正常的。
2)在项目中添加对dll的引用也解决了问题
问题:
将程序集添加到GAC时,如何让我的用户控件出现在设计器中?我是否错过了AssemblyInfo.cs文件中的任何参数或我错过的内容。
编辑:
在进一步分析中,我发现如果在提供的位置中不存在dll,则会发生此错误。例如,如果我将d:\Location1\UserControl.dll
中的程序集添加到工具框中,那么在拖动控件时会抛出此异常,如果我将dll添加到工具箱后将其从此位置删除。
所以,我检查了这个程序集是否仍然存在于GAC中,或者没有使用visual studio developer命令提示符,并且发现dll存在于GAC中。但仍然无法找到为什么异常抛出
答案 0 :(得分:0)
我试图重现你的场景。我在工具箱中创建了一个新的GAC选项卡,我正在拖动它的' GAC在该选项卡上的位置,而不是从其部署到GAC的驱动器上的原始位置(如果我理解正确的话)。没有任何错误。使用Microsoft Visual Studio 2010 Ultimate,版本10.0.40219.1 SP1Rel,Microsoft .NET Framework版本4.5.50938 SP1Rel。