我正在使用旧版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提示路径的文件夹中看到它。
答案 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