如何解决设计错误“找不到方法'System.Configuration.ConfigurationManager.AppSettings'”。

时间:2019-07-24 10:38:12

标签: vb.net winforms windows-forms-designer

我正在使用旧版WinForms应用程序,打开主窗体时,设计器崩溃并吐出错误“找不到方法'System.Configuration.ConfigurationManager.AppSettings'”。但是该应用程序可以正常运行并按预期加载,我在过去的两周内已经完成了该应用程序的工作,并且已按预期在设计器中打开。

通过查看此区域的其他问题,显而易见的答案通常是因为op忘记添加对System.Configuration的引用。我已确保在项目中引用了此内容。

我尝试通过删除所有内容并重新安装来限制整个VS / .Net安装,但此操作无济于事。

唯一引用System.Configuration命名空间的代码是下面的代码,注释掉它可以使设计器正常加载,但添加了此代码后将失败。

   Me.Text = "Application Env - " + System.Configuration.ConfigurationManager.AppSettings("test")

下面是我的app.config的内容

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="test" value="test"/>
  </appSettings>
</configuration>

该错误似乎暗示着无法找到System.Configuration的程序集,但intellisense选择了完整路径,我可以在dll提示路径的文件夹中看到它。

1 个答案:

答案 0 :(得分:1)

  

唯一引用System.Configuration命名空间的代码是下面的代码,注释掉它可以使设计器正常加载,但添加了此代码后将失败。

WinForm设计器无法加载。这意味着您在InitializeComponent方法中编辑了问题行以包含AppSettings调用。

Visual Studio Winform设计器代码未引用System.Configuration,因此无法处理该行。您表示这是一个旧项目。如果该项目是VS2008之前的版本,则初始化组件方法仍可能位于FormName.vb文件中。 VS2008引入了部分类,并将设计器代码放置在FormName.designer.vb中。

将有问题的代码行移至仅在运行时环境中执行的代码。例如:

Protected Overrides Sub OnLoad(e As EventArgs)
  MyBase.OnLoad(e)
  Me.Text = "Application Env - " & System.Configuration.ConfigurationManager.AppSettings("test")
End Sub

或在表单中添加一个构造函数并将其放置在表单中。

Public Sub New()
  InitializeComponent()
  Me.Text = "Application Env - " & System.Configuration.ConfigurationManager.AppSettings("test")
End Sub