Проблемы с конструктором форм в VS 2008? - PullRequest
2 голосов
/ 20 мая 2009

Мы сталкиваемся с несколькими случаями, когда при загрузке проекта, который в противном случае был в порядке, выдается ошибка в конструкторе Winforms по следующим направлениям:

Не удалось загрузить файл или сборку 'MyLibrary, версия = 1.4.3419.14461, культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей. Система не может найти указанный файл.

И Visual Studio умирает, предлагая нам, если мы хотим отправить отладочную информацию в Microsoft - если это приглашение игнорируется, мы можем закрыть уязвимые вкладки, сохранить все, и все нормально при перезагрузке; если мы не закрываем затронутые вкладки, проблема повторяется.

Я не уверен, является ли это ошибкой Visual Studio, или мы делаем что-то «неправильно» или неожиданно. У кого-нибудь есть идеи о том, где искать, или распространенные причины такого рода проблем?

(Ради аргумента решение состоит из MyLibrary и MyLibrary.Windows, в которых имеется ссылка на первый проект. Оба проекта создаются без проблем после загрузки Visual Studio. Если это имеет какое-то значение, проекты были мигрировал с VS2003, который, в свою очередь, не показывал этот сбой)

EDIT:

Также пытались загрузить решение с подключенным отладчиком, с загруженным решением, и оно вылетало, не останавливаясь ни на каких исключениях

Ответы [ 3 ]

3 голосов
/ 21 мая 2009

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

Например (код, записанный с манжеты для иллюстрации):

public class MyUserControl : UserControl
{
    // This will be fine.
    public int RowCount { get; set; }

    // This will cause problems
    public CustomerEntity DisplaySubject { get; set; }
}

Кажется, что происходит то, что дизайнер пытается десериализовать исходный код из кода разработчика (в отдельном файле) и запутывается в неожиданном типе.

Один из способов исправить ситуацию - не выставлять свойства с помощью пользовательских типов, но это неприятно в интерфейсе стула (хм).

Другой способ - пометить свойства атрибутом DesignerSerializationVisibility , указав скрытый (не сохраняются в коде инициализации).

Если вы храбры, вы можете использовать атрибут DesignerSerialization для самостоятельного управления сериализацией, но вам это вряд ли понадобится.

1 голос
/ 20 мая 2009

Вы можете попробовать:

  • Очистите раствор и полностью восстановите
  • Удалите оскорбительные ссылки и добавьте их снова
  • Очистите раствор и снова выполните полное восстановление
  • Перезагрузите Visual Studio

Удачи

Edit:

Также попытайтесь установить для указанной версии dll значение false и перезагрузить решение. См http://channel9.msdn.com/forums/TechOff/261335-Dreadful-Visual-Studio-2008-crash-Solved/?CommentID=392089

0 голосов
/ 20 мая 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...