56

在 VS2005 C# 项目中,我添加了对 System.configuration 的引用。在对象浏览器中,我可以看到 System.Configuration.ConfigurationManager。在 Intellisense System.Configuration 中只有旧的 ConfigurationSettings,没有 ConfigurationManager。

我的代码 System.Configuration.ConfigurationManager.AppSettings["MySetting"]

突出显示为语法错误且无法编译。

在另一个项目中,完全相同的设置工作得很好......关于发生了什么的任何线索?

4

9 回答 9

129

虽然 使用 System.Configuration ; 命令在 using 部分自动生成,由于某种原因未设置实际参考。

进入add reference, .Net 选项卡,然后选择System.Configuration

ConfigurationManager 现在将被解析。

如果您转到完全相同的设置工作正常的项目并查看引用,您将看到对 System.Configuration 的引用。

于 2009-05-13T20:31:20.370 回答
16

要回答这个问题(不是说它还没有被回答 5 次以上)是添加 System.Configuration 作为对您的项目的引用。

然而,我真正想强调的是,在许多情况下,我已经将 System.Configuration.dll 添加到我的项目引用中,但无论出于什么特殊原因,有时即使在添加对 System.Configuration 的引用之后,ConfigurationManager 仍然不会出现在智能感知中。配置。即使我删除了引用并再次添加它。

这个问题的非常简单的解决方案是:

  1. 将对 System.Configuration.dll 的引用添加到您的项目中
  2. 保存您的文件
  3. 保存您的解决方案
  4. 关闭给您带来困难的 Visual Studio 实例
  5. 重新打开您的解决方案

这个简单的练习将使 Visual Studio 再次运行,并停止告诉您您没有添加对 System.Configuration 的引用。这个练习通常可以帮助我解决所有莫名其妙的 Visual Studio 行为。

我在 VS2008 和 VS2010 中都多次遇到过这种情况,并且每次都有效。

于 2012-08-16T22:21:05.673 回答
11

呃 - PICNIC 错误。在解决方案中添加了 ref 到错误的项目...

于 2009-05-12T09:00:18.823 回答
9

对于在开发 ASP.NET WebForms 和 WinForms 之间来回切换的任何人来说,这个技巧可能会派上用场。

如果您在 C# WinForms 项目中进行开发,您会发现尝试使用 aConfigurationManager来获取您的app.config设置会导致以下错误:

当前上下文中不存在名称“ConfigurationManager”

由于这默认包含在 ASP.NET 项目中,这可能会让人感到意外。只需右键单击项目中的“参考”节点并查看“.NET”选项卡。向下滚动,您应该会找到System.Configuration. 将此添加到您的项目中,您应该可以启动并运行。

添加对 System.Configuration 的引用

如果您已经添加System.Configuration到代码顶部的 using 部分,您现在应该能够使用配置设置(例如连接字符串)和以下代码:

con.ConnectionString = ConfigurationManager.ConnectionStrings[sConnection].ConnectionString;
于 2009-07-02T11:35:24.083 回答
4

从 MSDN 文档 -

要使用 ConfigurationManager 类,您的项目必须引用 System.Configuration 程序集。默认情况下,某些项目模板(如控制台应用程序)不引用此程序集,因此您必须手动引用它。

https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx

于 2016-06-17T18:54:54.403 回答
4
  1. 转到管理 NuGet 包
  2. 浏览系统.配置
  3. 安装包 System.Configuration.ConfigurationManager。看法
于 2019-06-27T06:31:52.610 回答
3

我认为您需要隐式引用System.Configuration程序集。

于 2009-05-12T09:46:16.610 回答
0

这只是一个猜测,但也许您应该检查您的项目是否至少使用 .NET 框架 2.0。ConfigurationManager 类自 .NET 2.0 起可用,如下所述: msdn 上的链接

于 2009-05-12T08:54:23.700 回答
0

哇——这对我来说很难解决;最后,我发现我的 vb.net 程序只有在包含引用(如预期)并从我的模块中删除“Imports System.Net”语句(如我所料)时才能编译。

于 2021-01-14T19:40:28.610 回答