0

当我尝试在设计器的 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,我没有更改它,所以它应该是正确的,因为它以前工作过。

我将 C# 与 Visual Studio 2005 和 .net 2 与 SubSonic 2 一起使用,我无法切换,它是一个现有项目。

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

4

1 回答 1

0

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

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

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

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

看看我在这里的答案:Subsonic:动态连接如何做到这一点。

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

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

于 2010-08-13T19:36:56.803 回答