Добавление элемента управления из панели инструментов winforms вызывает ошибку
Я использую пользовательский элемент управления в окнах форм. 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 и обнаружил, что dll присутствует в GAC. Но до сих пор не могу найти, почему выбрасывает исключение
1 ответ
Я пытался воспроизвести ваш сценарий. Я создал новую вкладку GAC на панели инструментов и перетаскиваю dll из ее местоположения GAC в эту вкладку, а не в исходное местоположение на вашем диске, из которого она была развернута в GAC (если я правильно понял). Никаких ошибок вообще. Использование Microsoft Visual Studio 2010 Ultimate, версия 10.0.40219.1 SP1Rel, Microsoft .NET Framework версия 4.5.50938 SP1Rel.