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

时间:2009-08-13 21:58:52

标签: c# .net visual-studio visual-studio-2008

我正在尝试从配置文件中访问connectionStrings。代码是ASP.NET + C#。我已将System.Configuration添加到引用中,并在使用时也提到了。但它仍然不接受集会。

我正在使用VSTS 2008.任何想法可能是什么原因?

另一个奇怪的事情是显示为“System.configuration”的程序集名称,小写c不是其他系统程序集的名称显示方式。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace Utility
{
    public class CommonVariables
    {
        public static String ConnectionString
        {
            get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
        }  
    }  
}

配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

18 个答案:

答案 0 :(得分:771)

不仅需要使用命名空间 System.Configuration。您还必须通过

添加对程序集 System.Configuration.dll的引用
  1. 右键单击引用/依赖关系
  2. 选择添加参考
  3. 查找并添加System.Configuration
  4. 这肯定会奏效。 同样对于NameValueCollection你必须写:

    using System.Collections.Specialized;
    

答案 1 :(得分:94)

在您的项目中,右键单击添加引用... ,在.NET选项卡中,找到System.Configuration组件名称,然后单击“确定”。

using System.Configuration告诉编译器/ IntelliSense在该命名空间中搜索您使用的任何类。否则,您每次都必须使用全名(System.Configuration.ConfigurationManager)。但是如果你不添加引用,那么在任何地方都找不到该命名空间/类。

请注意,DLL可以具有任何名称空间,因此理论上文件System.Configuration.dll可以具有名称空间Some.Random.Name。为了清晰/一致,它们通常是相同的,但也有例外。

答案 2 :(得分:36)

好的..重新启动VSTS后它可以正常工作。 link提出了针对同一问题的解决方案。希望我以前见过它。 :)

答案 3 :(得分:17)

添加此答案,因为没有一个建议的解决方案适合我。

  
      
  1. 右键单击引用选项卡以添加引用。
  2.   
  3. 单击“装配”选项卡
  4.   
  5. 搜索“System.Configuration”
  6.   
  7. 单击“确定”。
  8.   

答案 4 :(得分:9)

我已经为问题configurationmanager does not exist in the current context找到了更好的解决方案。

要从web.config读取连接字符串,我们需要使用ConfigurationManager类及其方法。如果您想使用,则需要使用System.Configuration;

添加命名空间

虽然您使用了此命名空间,但在尝试使用ConfigurationManager类时,系统会显示错误“当前上下文中不存在configurationmanager”。 解决这个问题:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

答案 5 :(得分:9)

System.Configuration添加为所有项目的参考将解决此问题。

  1. 转到Project-> Add Reference

  2. 在显示的框中,单击左侧列表中的All assemblies列表标签。

  3. 在中央列表中,滚动到System.Configuration并确保选中该框。

  4. 单击“确定”进行应用,您现在将可以访问ConfigurationManager类。

答案 6 :(得分:8)

如果您收到很多警告(在我的情况下是64个解决方案!),如

  

CS0618:'ConfigurationSettings.AppSettings'已过时:'此方法已过时,已被System.Configuration取代!System.Configuration.ConfigurationManager.AppSettings'

因为您正在升级旧项目,所以可以节省大量时间,如下所示:

  1. 添加System.Configuration作为参考部分的参考。
  2. 将以下两个using语句添加到每个类(.cs)文件的顶部:

    using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

  3. 通过这种改变所有出现的

    ConfigurationSettings.AppSettings["mySetting"]
    

    现在将引用正确的配置管理器,不再是已弃用的配置管理器,并且所有CS0618警告将立即消失。

    当然,请记住,这是一个快速的黑客攻击。从长远来看,您应该考虑重构代码。

答案 7 :(得分:6)

您确定已添加对.NET程序集的引用而不是其他内容吗?我将删除您的引用,然后尝试重新添加它,确保您从Visual Studio参考对话框中的.NET选项卡中选择 - 最新版本应该是GAC中的2.0.0.0。

答案 8 :(得分:4)

要进行健全性检查,请尝试创建新的Web应用程序项目,打开Default.aspx页面的代码。在Page_Load中添加一行以访问您的连接字符串。

默认情况下,应将System.Configuration添加为引用。您还应该在代码文件的顶部看到using语句。

我的代码隐藏文件现在看起来像这样,编译没有任何问题。

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebApplication1
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
    }
  }
}

这假设我的web.config中有一个连接字符串,其名称等于“MyConnectionStringName”,如此...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="MyConnectionStringName"
            connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

是的,我知道这是基本的。但是,如果你没有任何更好的想法,有时候检查你知道应该工作的非常简单的事情会有所帮助。

答案 9 :(得分:3)

  1. 右键单击项目
  2. 选择管理器NuGet程序包
  3. 查找System.Configuration
  4. 选择Microsoft的System.Configuration.ConfigurationManager
  5. 安装

现在您可以:

using System.Configuration;

答案 10 :(得分:1)

如果此代码位于单独的项目中,例如库项目。 不要伪造添加对system.configuration的引用。

答案 11 :(得分:1)

只需安装

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

然后使用

using System.Configuration;

答案 12 :(得分:0)

对于 Visual Studio 2019

右键单击项目并转到“管理 NuGet 包”。

enter image description here

搜索 System.Configuraion 并安装 System.Configuration.ConfigurationManager

enter image description here

现在在您的代码中,将识别配置管理器。

enter image description here

答案 13 :(得分:0)

Web配置(web.config)的配置管理器已过时。 所以看这个https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?redirectedfrom=MSDN&view=dotnet-plat-ext-3.1#System_Configuration_ConfigurationManager_AppSettings

创建设置实例

var appSettings = ConfigurationManager.AppSettings;

答案 14 :(得分:0)

在NetCore 3.1中,我不得不改用Microsoft.Extensions.Configuration

    public static async Task Main(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
            .Build();

...

答案 15 :(得分:0)

添加配置管理器文件以连接到数据库web.config

答案 16 :(得分:0)

要解决此问题,请转到解决方案资源管理器并右键单击引用,然后单击添加引用并选择.net并查找system.configuration选择单击确定

答案 17 :(得分:0)

如果您错误地添加对其他不相关项目的引用,也可能会出现此错误。检查这是否适用于您。