203

データベースファイルがExcelワークブックであるC#.NETでプロジェクトを実行しました。接続文字列の場所は私のコーディングでハードコーディングされているので、私のシステムにインストールするのに問題はありませんが、他のシステムでは問題はありません。

アプリケーションのセットアップが完了した後、一度パスを設定するようにユーザーに促す方法はありますか?

私が得た答えは「App.Configを使用する」でした...このApp.configとは何か、そしてここでの私のコンテキストでの使用方法を誰かに教えてもらえますか?

4

6 に答える 6

213

最も単純な app.config は、多数の定義済み構成セクションが利用可能で、カスタム構成セクションをサポートする XML ファイルです。「構成セクション」は、ある種の情報を格納するためのスキーマを持つ XML のスニペットです。

connectionStrings設定は、やなどの組み込みの構成セクションを使用して構成できますappSettings。独自のカスタム構成セクションを追加できます。これは高度なトピックですが、厳密に型指定された構成ファイルを作成するには非常に強力です。

通常、Web アプリケーションには web.config ファイルがあり、Windows GUI/サービス アプリケーションには app.config ファイルがあります。

アプリケーション レベルの構成ファイルは、machine.config などのグローバル構成ファイルから設定を継承します。Web アプリケーションも applicationHost.config から設定を継承します。

App.Config からの読み取り

接続文字列には、使用できる定義済みのスキーマがあります。この小さなスニペットは、実際には有効な app.config (または web.config) ファイルであることに注意してください。

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

app.config を定義したら、ConfigurationManagerクラスを使用してコードで読み取ることができます。冗長な MSDN の例に惑わされないでください。それは実際には非常に簡単です。

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

App.Config への書き込み

*.config ファイルを頻繁に変更することは、通常は良い考えではありませんが、一度だけセットアップを実行したいように思えます。

参照:実行時に *.config ファイルのセクションを更新する方法について説明している「実行時に接続文字列を変更し、app.config をリロードする」を参照してください。connectionStrings

理想的には、単純なインストーラーからこのような構成変更を実行することに注意してください。

実行時の App.Config の場所

Q : app.config の一部を手動で変更<value>し、保存してから閉じたとします。bin フォルダーに移動して、ここから .exe ファイルを起動すると、適用された変更が反映されないのはなぜですか?

A : アプリケーションをコンパイルすると、その app.config が、exe ファイルと一致する名前でbin ディレクトリ1にコピーされます。たとえば、exe の名前が「test.exe」の場合、bin ディレクトリに「text.exe.config」が存在するはずです。再コンパイルせずに構成を変更できますが、元の app.config ではなく、コンパイル時に作成された構成ファイルを編集する必要があります。

1: web.config ファイルは移動されず、コンパイル時とデプロイ時に同じ場所にとどまることに注意してください。これに対する 1 つの例外は、web.config が変換される場合です。

.NET コア

新しい構成オプションが .NET Core で導入され、統合された .NET (バージョン 5 以降) で継続されます。*.config ファイルの動作は根本的に変わっていませんが、開発者はより柔軟な新しい構成パラダイムを自由に選択できます。

.NET Framework 構成と同様に、.NET Core は非常に複雑になる可能性がありますが、実装は数行の構成とそれを読み取るための数行の c# と同じくらい単純です。

于 2012-10-24T05:38:45.490 に答える
63

簡単に言うと、App.configは、アプリケーション レベルの構成XMLを保持するベースのファイル形式です。

例:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

ConfigurationManager以下のコード スニペットに示すように、を使用して構成にアクセスできます。

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

注: ConfigurationSettings構成情報を取得するための古いメソッドです。

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
于 2012-10-24T05:43:41.427 に答える
4

App.Config は、アプリケーションの構成ファイルとして使用される XML ファイルです。つまり、コードを変更 (および再コンパイル) することなく、変更したい設定を内部に保存します。多くの場合、接続文字列を格納するために使用されます。

その方法については、この MSDN の記事を参照してください。

于 2012-10-24T05:40:21.697 に答える
2

次を使用してApp.Configのキーにアクセスできます。

ConfigurationSettings.AppSettings["KeyName"]

このスレッドを見てください

于 2012-10-24T05:40:44.990 に答える
0

あと1点だけ追加

app.config を使用してアプリケーション アクセスを制御する方法をいくつか使用すると、特定の変更をアプリケーション全体に適用し、アプリケーション構成ファイルを使用して、以下の ConfigurationSettings.AppSettings["Key"] のような設定にアクセスできます。

于 2020-07-16T11:42:32.630 に答える