Я использую настраиваемый элемент управления в формах Windows. DLL для настраиваемого элемента управления установлена в GAC. Я добавил этот настраиваемый элемент управления в свой ящик для инструментов.
Когда я перетаскиваю этот настраиваемый элемент управления из панели инструментов в конструктор winforms, я получаю следующую ошибку:
Не удалось создать компонент UserControl. Следующее сообщение об ошибке: «System.Runtime.InteropServices.COMException (0X80004005): ошибка HRESULT E_FAIL была возвращена из вызова компонента.
в VSLangProj.References.Add (String bstrPath) ...................................
Это работает:
1) Добавление локальной ссылки сборки в панель инструментов и перетаскивание ее на форму работает правильно.
2) Добавление ссылки на dll в проекте также решает проблему.
Вопрос:
Как я могу сделать так, чтобы мой пользовательский элемент управления отображался в конструкторе, когда сборка добавлена в GAC? Я пропускаю какие-либо параметры в файле AssemblyInfo.cs или что-то, что мне не хватает.
Редактировать:
При дальнейшем анализе я обнаружил, что эта ошибка произойдет, если dll отсутствует в указанном месте. Например, если я добавляю сборку из d:\Location1\UserControl.dll
в панель инструментов, это исключение будет выдано при перетаскивании элемента управления, если я удалю dll из этого места после добавления ее в панель инструментов.
Итак, я проверил, присутствует ли эта сборка в GAC или нет, используя командную строку разработчика Visual Studio, и обнаружил, что dll присутствует в GAC. Но все еще не могу найти, почему выбрасывается исключение