Ошибка времени разработки формы Windows - PullRequest
0 голосов
/ 13 января 2009

Я использую Visual Studio 2008 и получаю следующее сообщение об ошибке при попытке открыть одну из моих форм:

Не удалось найти элемент конечной точки с имя "WSHttpBinding_ICommon" и контракт "CommonWCF.ICommon" в Конфигурация клиента ServiceModel раздел. Это может быть потому, что нет файл конфигурации был найден для вашего приложение, или потому что нет конечной точки элемент, соответствующий этому имени, может быть найдено в клиентском элементе.

И следующая трассировка стека

в System.ComponentModel.ReflectPropertyDescriptor.SetValue (Объект компонент, значение объекта) в System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement (IDesignerSerializationManager менеджер, CodeAssignStatement заявление, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError) в System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement (IDesignerSerializationManager менеджер, CodeAssignStatement заявление) в System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement (IDesignerSerializationManager менеджер, заявление CodeStatement)

И все же у меня есть элемент, предложенный в моем App.Config, и все работает во время выполнения. Тем не менее, всякий раз, когда я пытаюсь открыть форму, я получаю это сообщение, что не так уж плохо, потому что я могу игнорировать его, но когда я делаю, многие элементы управления (те с якорями справа и / или снизу) сдвигаются и мои сетки автоматически восстанавливают все столбцы из источника данных, который (столбцы) я ранее удалил.

Есть предложения / обходные пути? Это ошибка Visual Studio 2008?

Ответы [ 4 ]

2 голосов
/ 25 января 2010

Существует другой подход к отладке процесса devenv (визуальная студия) во время разработки, как указано здесь

Это помогло, когда при открытии формы в режиме конструктора выдается исключение (т. Е. Отображается ошибка для пользователя).

Вот краткое изложение этой статьи:

  1. Откройте новый экземпляр Visual Studio.
  2. Открыть любой исходный файл. Это необходимо для того, чтобы Visual Studio позволял вам присоединяться к процессу.
  3. Присоедините новый экземпляр Visual Studio к первому. Процесс Visual Studio называется devenv.exe. Вам нужно только присоединиться к управляемому коду.
  4. Настройка Visual Studio на прерывание исключений общего языка во время выполнения - выбрасывается и обрабатывается пользователем. Закройте проблемную форму и снова откройте ее.

Это должно привести к исключению, обнаруженному внутри вашего кода во втором экземпляре Visual Studio!

1 голос
/ 14 июля 2009

Я использую

        if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
        {
            return;
        }

Чтобы проверить режим проектирования в конструкторе, если он делает что-то отличное от InitializeComponent (), и метод загрузки, если он есть.

1 голос
/ 13 января 2009

Где вы используете конечную точку? Вам это действительно нужно или вы можете звонить только во время выполнения? Вы можете использовать свойство Component.DesignMode, чтобы определить, находитесь ли вы в режиме разработки, чтобы предотвратить вызовы к конечной точке. Чтобы полностью отладить ваш опыт разработки, следуйте инструкциям в этой статье.

0 голосов
/ 13 января 2009

Однажды у меня была похожая ошибка в форме, которая пыталась сделать вызов базы данных во время инициализации конструктора.

К сожалению, Component.DesignMode не устанавливается до тех пор, пока не закончится конструктор!

...