Отладка управления сбоем в Visual Studio Designer - PullRequest
1 голос
/ 16 сентября 2010

У меня есть элемент управления, который падает в конструкторе форм при создании приложения, и я пытаюсь выяснить, как отладить проблему.

Я думал, что все, что мне нужно было сделать, чтобы войти в систему с отладчиком, - это запустить вторую копию VS и использовать Debug-Attach для обработки и присоединения к копии Visual Studio, что решение с моим проблемным управлением - это в. Я сделал это, но ничего не происходит, когда происходит сбой управления, поэтому я знаю, что делаю что-то не так ...

Сбой происходит в конструкторе и возвращает окно сообщения:

---------------------------
Microsoft Visual Studio
---------------------------
The control NameSpace.MyControl has thrown an unhandled exception in the designer and has been disabled.  



Exception:

Could not load file or assembly 'OtherProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.



Stack trace:

   at NameSpace.MyControl.OnPaint(PaintEventArgs e)
---------------------------
OK   
---------------------------

OtherProject является частью решения и на него ссылается проект, содержащий как форму, так и пользовательский элемент управления.

Когда я закрываю окно сообщения, элемент управления отображает трассировку стека, где элемент управления находится в моей форме, но, поскольку он не содержит номеров строк, я не знаю, откуда возникла проблема.

1 Ответ

4 голосов
/ 16 сентября 2010

Путь поиска для сборок отличается, когда они загружаются во время разработки, это будет пробный путь для Visual Studio.Который настраивается файлом devenv.exe.config в Common7 \ IDE.Включены только папки «Общие сборки» и «Частные сборки».Каталог сборки вашего проекта не считается.

Изменение этого файла .config или копирование вашей сборки в одну из этих папок не совсем практично.Безусловно, лучше всего просто не вызывать код, который требует эту сборку во время разработки.Используйте свойство DesignMode:

    protected override void OnPaint(PaintEventArgs e) {
        if (!this.DesignMode) {
            // Runtime painting code here
            //...
        }
        base.OnPaint(e);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...