none
Windows FormでConfigurationManager RRS feed

  • 質問

  • こんにちは meloneuwです。

    C#のWindows Formアプリケーションでデータベースに接続しようとしています。すでにapp.config内に

    <configuration>
        <connectionStrings>
            <add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
                providerName="System.Data.OleDb" />
        </connectionStrings>
    </configuration>

    というエントリがあり、

    OleDbConnection con = new OleDbConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];

    と書いてみると、

    型または名前空間名 'ConfigurationManager' は名前空間 'System.Configuration' に存在しません。アセンブリ参照が不足しています。 

    と出てしまってConfigurationManager自体が使えません。using System.Configurationとしてもだめなのですが、ASP.NETでは問題なくConfigurationManagerが使えています。

    Windows Formだから使えないとかはないと思うのですが、指定の仕方が間違っているのでしょうか。

    どなたかお分かりの方教えてください。

    2006年10月19日 6:58

回答

  •  参照設定からSystem.Configurationを追加してください。

    > Windows Formだから使えないとかはないと思うのですが

    ASP.NETとWindowsアプリではデフォルトで参照するdllが異なりますね。

    2006年10月19日 7:04

すべての返信

  •  参照設定からSystem.Configurationを追加してください。

    > Windows Formだから使えないとかはないと思うのですが

    ASP.NETとWindowsアプリではデフォルトで参照するdllが異なりますね。

    2006年10月19日 7:04
  • どっとねっとふぁんさん、即答ありがとうございます。

    >ASP.NETとWindowsアプリではデフォルトで参照するdllが異なりますね。

    そうだったんですか。
    参照の追加で.NETタブからSystem.configurationを追加し、using System.Configuration;とすることで、ConfigurationManagerが使えるようになりました。

    Systemの下にもConfigurationがあるし、System.Configurationもあるんですね。

    非常に勉強になりました。ありがとうございました。

     

    2006年10月19日 7:47
  • > Systemの下にもConfigurationがあるし、System.Configurationもあるんですね。

    .NET Frameworkでは名前空間は本当に単なる目印みたいなもので、アセンブリ(dll)と一致しているわけではないので注意が必要ですね。
    各クラスのドキュメントにどのdllに含まれているか、という記述がありますからそこでの確認が必要になります。

    2006年10月19日 8:21
  • >各クラスのドキュメントにどのdllに含まれているか、という記述がありますからそこでの確認が必要になります。

    たしかに、
    http://msdn2.microsoft.com/ja-jp/library/ms134260.aspx

    名前空間: System.Configuration
    アセンブリ: System.Configuration (system.configuration.dll 内)

    と書いてありました。いままでぜんぜん気にしてませんでした。

    2006年10月19日 9:10