9

2 つのクラス ライブラリ プロジェクトと ASP.NET Web サイトを含む VS 2008 のソリューションがあります。ASP.NET サイトはクラス ライブラリを参照しており、ライブラリの 1 つに LINQ To SQL アイテムが含まれています。

私の質問は、データベースの接続文字列を含むクラス ライブラリの app.config に関するものです。プロジェクトをビルドすると、この app.config はビルド ディレクトリ内にないため、デプロイされたプロジェクトの接続文字列を動的に変更できません。

ここで何が間違っていますか?接続文字列を変更できるように、これらの設定を展開するにはどうすればよいですか?

前もって感謝します、

マーティン。

4

5 に答える 5

18

これも最初は少し戸惑いました。

クラス ライブラリは、独自のプロジェクトに含まれている app.config ファイルを使用していると思うかもしれませんが、そうではありません。それを参照しているプロジェクトの構成ファイルを使用します。

<appSettings/>そのため、 ASP.Net プロジェクトの web.config ファイル内でタグを探して変更し、ライブラリ プロジェクトの app.config ファイルに含まれているタグを<appSettings></appSettings>追加する必要があります。<add ... />ConfigurationManager クラスがこれを理解するためにコードを変更する必要はありません。自動的にどこを見るべきかを知っています。

それが理にかなっていることを願っています。

于 2009-01-12T12:34:04.247 に答える
1

接続文字列の問題を克服するためのトリックは次のとおりです

  1. ur クラス ライブラリ内で、セッターとゲッターの 2 つのプロパティを持つモジュールを宣言し、それらをパブリックにします。
    1. Web サイト プロジェクト内で、グローバル ファイルに移動し、セッション開始とアプリケーション開始の両方で、以前に宣言したセッター プロパティを呼び出し、web.config にある接続文字列を割り当てます。接続文字列が使用可能になります。 Web サイトの一般的なスコープで、値はセッション資格情報の有効期限が切れていない限り存在します。
于 2010-06-03T09:16:45.970 に答える
1

Web.config最終製品でファイルを編集できます。構成 API は通常、アプリケーションのプライマリ構成ファイルから構成データを取得します。ASP.NET アプリの場合は でWeb.configあり、クライアント アプリケーションの場合はMyfile.exe.configです。プロジェクト内のクラス ライブラリには、通常、MyClassLib.dll.config(特定のファイルを手動で参照しない限り) のような個別の構成ファイルがないことを知っておくことが重要です。

于 2009-01-12T12:21:27.063 に答える
0

開発と運用で異なる設定が必要な場合は、Web 配置プロジェクトを使用してください。ここからダウンロードしてください。マイクロソフトの説明から:

Visual Studio 2008 Web 配置プロジェクトは、Visual Studio 2008 で Web サイトと Web アプリケーションをビルドおよび配置するための追加機能を提供します。このアドインは、ビルド構成、マージ、および MSBuild でのビルド前およびビルド後のタスクの使用を管理するための包括的な UI を提供します。 .

于 2009-01-12T14:26:57.810 に答える
0

ライブラリの app.config ファイルから connectionString セクションを web.config ファイルにコピーします。必要に応じて、実際の接続文字列を開発サーバーから運用サーバーに変更します。LINQ2SQL が接続文字列を取得するために使用する ConfigurationManager クラスは、適切な名前の接続文字列を web.config ファイルで検索し、存在する場合はそれを使用します。

于 2009-01-12T12:38:51.473 に答える