Не удается найти раздел SubSonicService в файле конфигурации приложения - PullRequest
0 голосов
/ 10 августа 2010

Когда я пытаюсь открыть свою MainForm в Visual Studio в конструкторе, вместо конструктора Visual Studio появляется эта ошибка.

Не удается найти раздел SubSonicService в файле конфигурации приложения

at System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)

Он работал раньше, и в Проекте есть много других форм / элементов управления, и они работают. Я также могу построить свой проект и запустить его без каких-либо проблем, кажется, это просто дизайнер.

В моем app.config есть раздел SubSonic, и я не изменил его, поэтому он должен быть правильным, потому что он работал раньше.

Я использую C # с Visual Studio 2005 и .net 2 с SubSonic 2, я не могу переключиться, это существующий проект.

У кого-нибудь есть идеи, как это исправить?

1 Ответ

0 голосов
/ 13 августа 2010

Я думаю, что вы пытаетесь загрузить дозвуковой объект в конструктор вашей главной формы или любой другой пользовательский элемент управления в нем. Это распространенная ошибка, которая возникает с другими объектами, которые не работают в конструкторе. Для этого случая есть свойство DesignMode, которое вы можете проверить:

if (!DesignMode)
{
    Product p = new Product(1);
}

Тем не менее, я бы посоветовал не полагаться на app.config для настройки дозвуковых в проектах Windows Form. Существуют различные способы внедрить провайдера в subsonic2 без использования app.config. В веб-проекте всегда есть файл web.config, который содержит большинство параметров конфигурации для всего проекта, но в приложении для форм Windows существуют и другие проблемы, такие как:

  • изменение параметров строки подключения (разные хосты / пользователи), и вы, вероятно, не хотите хранить свой пароль в app.config (по крайней мере, если вы не используете единый вход).
  • если вы используете subsonic в библиотеке классов, вы должны добавить раздел дозвукового сервиса в каждое приложение winforms / console, которое его использует.
  • изменения соединения во время выполнения. Возможно, у вас есть тест и производственная база данных, к которой вы не хотите подключаться без закрытия приложения и редактирования файла app.config.

Посмотрите на мой ответ здесь: Дозвуковой: динамические соединения как это сделать.

(код не от меня, но оригинальная страница не работает)

Этот метод работает для меня как шарм.

...