web-dev-qa-db-ja.com

'ConfigurationManager'という名前は現在のコンテンツには存在しません

設定ファイルからconnectionStringsにアクセスしようとしています。コードはASP.NET + C#です。参照にSystem.Configurationを追加し、usingについても言及しました。しかしそれでも、それは議会を受け入れないでしょう。

私はVSTS 2008を使用しています。何が考えられるのでしょうか。

もう1つの奇妙なことは、 "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>
422
pencilslate

わかりました..それはVSTSを再起動した後うまくいきました。 link は同じ問題に対する解決策を提案しました。私は前にそれを見たことができればいいのに。 :)

36
pencilslate

名前空間 System.Configurationを使用する必要があるだけではありません。また、 Assembly System.Configuration.dllへの参照を追加する必要があります。

  1. 参照/依存関係 を右クリック
  2. 参照の追加 を選択
  3. System.Configurationを見つけて追加します。

これは確かにうまくいくでしょう。 NameValueCollectionについても書く必要があります:

using System.Collections.Specialized;
769
Kieran

プロジェクトで、右クリックします。 [参照の追加...] 、[.NET]タブで、System.Configurationコンポーネント名を見つけて[OK]をクリックします。

using System.Configurationは、コンパイラ/ IntelliSenseに、その名前空間で使用するクラスを検索するように指示します。それ以外の場合は、毎回フルネーム(System.Configuration.ConfigurationManager)を使用する必要があります。しかし、参照を追加しなければ、その名前空間/クラスはどこにも見つかりません。

DLLは任意の名前空間を持つことができるので、ファイルSystem.Configuration.dllは理論的には名前空間Some.Random.Nameを持つことができます。明確さと一貫性のために、それらは通常同じですが、例外があります。

94
Rameez

提案された解決策のどれも私のために働かないので、この答えを追加する。

  1. 参照を追加するには、参照タブを右クリックします。
  2. アセンブリタブをクリックします
  3. 「System.Configuration」を検索してください。
  4. OKをクリックしてください。
17

私はconfigurationmanager does not exist in the current context問題のためのより良い解決策を得ました。

web.configから接続文字列を読み込むには、ConfigurationManagerクラスとそのメソッドを使用する必要があります。使いたい場合はSystem.Configurationを使って名前空間を追加する必要があります。

この名前空間を使用しましたが、ConfigurationManagerクラスを使用しようとすると、システムに「configurationmanagerが現在のコンテキストに存在しません」というエラーが表示されます。この問題を解決するために:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 
9
Emu

すべてのプロジェクトへの参照としてSystem.Configurationを追加することでこれを解決できます。

  1. Project - > Add Referenceに行きます

  2. 表示されたボックスで、左側のリストにあるAll assembliesリストタブをクリックします。

  3. 中央のリストでSystem.Configurationまでスクロールし、ボックスがチェックされていることを確認してください。

  4. [OK]をクリックして適用すると、ConfigurationManagerクラスにアクセスできるようになります。

9
calios

あなたがたくさんの警告を受けているのなら(私の場合は64個のソリューションで!)

CS0618: 'ConfigurationSettings.AppSettings'は廃止されました: 'このメソッドは廃止されました、System.Configurationに置き換えられました!System.Configuration.ConfigurationManager.AppSettings'

古いプロジェクトをアップグレードしているので、次のように多くの時間を節約できます。

  1. 参照 セクションへの参照としてSystem.Configurationを追加します。
  2. 次の2つのusingステートメントを各クラス(.cs)ファイルの先頭に追加します。

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

これにより、

ConfigurationSettings.AppSettings["mySetting"]

正しい設定マネージャを参照するようになりました。現在は推奨されていませんが、CS0618の警告はすべてすぐに消えます。

もちろん、これは手っ取り早い方法です。長期的には、コードのリファクタリングを検討する必要があります。

8
Matt

.NETアセンブリへの参照を追加しましたか。それ以外のものではありませんか?参照を削除してから再度追加してみてください。必ず、Visual Studioの参照ダイアログの[.NET]タブから選択してください。最新バージョンはGACでは2.0.0.0になります。

6
Dan Diplo

健全性チェックのために、新しいWebアプリケーションプロジェクトを作成してみて、Default.aspxページのコードビハインドを開きます。 Page_Loadに1行追加して、接続文字列にアクセスします。

デフォルトで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>

ええ、それは私が知っている小学校です。あなたがより良いアイデアを持っていない場合でも、時にはそれはあなたが働くべきであることを知っていることを本当に簡単なものに対してチェックするのに役立ちます。

4
Nevada
  1. プロジェクトを右クリック
  2. 選択マネージャNuGetパッケージ
  3. System.Configurationを探します。
  4. MicrosoftによるSystem.Configuration.ConfigurationManagerの選択
  5. インストール

今あなたはできる:

using System.Configuration;
3
Samir Morimoto

このコードが図書館プロジェクトのように別のプロジェクトにある場合。 system.configurationへの参照を追加することを忘れないでください。

1
Steve Rey

誤って関連のない別のプロジェクトへの参照を追加した場合も、このエラーが発生する可能性があります。それがあなたに当てはまるかどうか確認してください。

0
Ike

この問題を解決するには、ソリューションエクスプローラーに移動し、参照を右クリックして[参照の追加]をクリックし、.netを選択してsystem.configurationをクリックし、[OK]をクリックします。

0
Keshav Patel