QA@IT

VisualStudio2017 ビルド時のapp.configについて

10074 PV

現在、VisualStudio2017にて、複数のプロジェクトを追加してWEBAppをファイルシステムで発行をしています。
以前は、VisualStudio2012にて、同様の発行をすると、configファイルはweb.configのみ生成されたのですが、
VisualStudio2017では、各プロジェクトのapp.configもdllフォルダ配下にXXXX.dll.configという名前で生成されています。

そのためか、各プロジェクトのXXX.dll.configのDB接続設定を参照してしまい、本来web.configに記載しているDBへ接続することができないようです。

この各プロジェクトのapp.configを生成しないようにする設定があるのでしょうか。
ご存知であればご教示頂きたく存じます。


VisualStudioでASP.NET C#でWebアプリケーションを構築しています。
一つのソリューションにWebアプリとC#の複数のプロジェクトで構成しており、複数のプロジェクトにはEDMやビジネスロジックを含んでいます。
発行時に各プロジェクト内のapp.configが生成されない設定があればご教示頂きたく。

  • 何の話をしているのか分かりません。web.config とかが出てくるから ASP.NET Web アプリの話のような気もしますが、app.config とかも出てくるし・・・  -
  • 想像を膨らませると、あるソリューションの中に ASP.NET Web アプリのプロジェクトと、同じソリューション内に EDM などを別プロジェクトで作って、別プロジェクトの app.config に含まれる接続文字列のことを言っているような気がしますが、そうなんですか? -
  • 上の私のコメントの件を質問欄に追記されてようですが今まで気が付きませんでした。お手数ですがコメント欄に追記した旨書いていただけると助かります。 -

回答

各プロジェクトのXXX.dll.configのDB接続設定を参照してしまい、本来web.configに記載しているDBへ接続することができないようです。

そこに思い違いがあるような気がします。何を根拠にそう判断されたのでしょうか? エラーメッセージが出ているならそれを書いていただけませんか?

VS2017 は持ってないので、VS2017 の発行の仕組みがどう変わったか分かりませんが、ASP.NET 自体の仕組みは変わってないです。

なので、もし VS2017 では別プロジェクトの .dll.config も Web サーバーにデプロイされるようになったとしても(ホントにそうなんですか?)、ASP.NET が「各プロジェクトのXXX.dll.configのDB接続設定を参照」することはないです。

例えば、ASP.NET Web アプリのプロジェクトと同一ソリューション内に別プロジェクトとして EDM を作成したとして、ASP.NET Web アプリから EDM のプロジェクトを参照に加えてビルドすると、ASP.NET Web アプリの bin フォルダにそのプロジェクトのアセンブリ(.dll ファイル)がコピーされます。

ASP.NET Web アプリが使うのは bin フォルダにコピーされたアセンブリ(.dll ファイル)だけで、接続文字列は必ず web.config のものを使用します。

もし、「web.configに記載しているDBへ接続することができない」ということがあるとすると、web.config にその EDM が使う接続文字列がない、もしくは間違っている以外には原因はないと思います。

なので、「app.configが生成されない設定」を考える前に、そのあたりをよく確認されることをお勧めします。

ちなみに、web.config に接続文字列がないと自分が作ったアプリでは「接続文字列が見つからない」というエラーになります。

web.config に接続文字列があっても間違っていれば間違っているなりのエラーが出ます。(例えば、接続先のサーバー名が間違っていると「SQL Server への接続を開けませんでした」というエラーになりますす)

エラーメッセージが出ているならそれがヒントになるかもしれません。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。