找不到应用程序配置文件的SubSonicService部分

时间:2010-08-10 14:24:14

标签: c# subsonic designer subsonic2.2

当我尝试在设计器中的Visual Studio中打开我的MainForm时,会弹出此错误而不是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,我没有改变它所以它应该是正确的,因为它之前有效。

我在Visual Studio 2005中使用C#,在SubSonic 2中使用.net 2,我无法切换,这是一个现有的项目。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为您尝试在主窗体的构造函数或其中的任何其他自定义控件中加载亚音速对象。这是在设计器中不起作用的其他对象发生的常见错误。对于这种情况,有一个属性DesignMode,您可以检查:

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

那就是说,我建议不要依赖app.config来配置windows窗体项目中的subsonic。有一些方法可以在不使用app.config的情况下将提供程序注入subsonic2。 在一个Web项目中,总会有一个web.config文件,它包含整个项目的大多数配置选项,但在Windows窗体应用程序中还有其他挑战,如:

  • 更改连接字符串选项(不同的主机/用户),您可能不希望将密码存储在app.config中(至少如果您不使用单点登录)。
  • 如果您在类库中使用subsonic,则必须向每个使用它的winforms / console应用程序添加一个亚音速服务部分。
  • 运行时连接更改。也许你有一个测试和一个你不想连接的生产数据库,而无需关闭应用程序并编辑你的app.config文件。

请在此处查看我的答案:Subsonic: dynamic connections如何执行此操作。

(代码不是来自我,但原始页面已关闭)

这种方法对我来说就像是一种魅力。