私のMVCアプリケーションでは、外部の構成ファイルを使用して、クリーンなweb.configを維持しています。一部のファイルは一般的であり、1つの場所からリンクとしてプロジェクトに追加しました。それらのファイルについては、コピーオプションを常にコピーに設定し、それらのファイルは宛先フォルダーにコピーされ、それらが表示されます。しかし、ブラウザでホームページを開こうとすると、「configSourceファイルを開けません」というエラーが表示されます。ファイルへのリンクを削除し、それらを追加するだけ(リンクなし)の場合、すべて正常に機能します。このエラーの原因は何ですか?
最後に私は何が問題であるかを見つけました。常にコピーを使用すると、ファイルはbinフォルダーにコピーされます。ただし、ファイルはビンではなく仮想ディレクトリで検索されます。そこで、正しいビルド先にファイルをコピーするビルド後のタスクを追加しました。
提案されたように、ビルド後のイベントを追加しました。ただし、正確な手順は次のとおりです。
xcopy/s "$(ProjectDir)\ bin\Config" "$(ProjectDir)\ Config"
私も同じ問題を抱えていました。私の場合、構成ファイルの「ビルドアクション」プロパティが原因でした。 (設定ファイルを右クリック>プロパティ>ビルドアクション)
「ビルドアクション」の値が「なし」に設定されました。 「コンテンツ」に変更すると、問題が解決しました。 (「Visual Studioのバグ」だったのか、それとも「クリックミス」だったのかが「なし」に設定されていたのかどうかはわかりません。
失敗したxcopyソリューションを試した後、次の方法でうまくいきました:
Cstrings.configを右クリックして、Properties
に移動します。
プロパティCopy to Output Directory
の値をCopy always
に設定します
https://stackoverflow.com/a/38408867/224045 を参照してください。
<connectionStrings configSource="bin\Connections.config">
</connectionStrings>
構成を区別するには(デプロイ/リリースなのでデバッグ/デプロイバージョン) transformation を追加できます。とにかくそれらを使用することは非常に便利です。
(はい、私はトピックが解決されたことを知っていますが、多分誰かがこの情報が私と同じように役立つと思うでしょう)