- PR -

[VS2005]app.configの設定

投稿者投稿内容
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-03-14 11:57
いつもお世話になっています。

プロジェクトをビルドするとapp.configも出力フォルダへコピーされます。
(名前は実行ファイル名.config)
この動作は問題ないのですが、app.configをいじった場合にわざわざビルドするのも
おかしな話なので色々と調べたところ、
MSDNのページにapp.configを出力フォルダへコピーする設定が載っていました。
(参照元記事 参考:メモの箇所)

ところがこの設定を「常にコピーする」にしたにも関わらず、
app.configの内容をいじっても出力フォルダのconfigは変更されません。

この設定を変更してもapp.configに関わる動作に影響しているように見えないのですが
この設定は実際どのような動作をするのでしょうか?

よろしくお願い致します。


[ メッセージ編集済み 編集者: ぴぃ子 編集日時 2008-03-14 11:58 ]
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-03-14 12:18
変更した後、ビルドまたはリビルドしてる?
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-03-14 12:32
この設定を「コピーしない」にしても
ビルドすれば反映されています。

ビルドしてコピーされるのは当然の仕様だと思っているので
この設定を「常にコピーする」にした場合と「コピーしない」のままでの
動作の違いが知りたいのです。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2008-03-14 13:02
引用:

この設定を「常にコピーする」にした場合と「コピーしない」のままでの
動作の違いが知りたいのです。



App.configのプロパティですので、App.configそのものが〜ということです。
つまり、通常は「コピーしない」です。
アセンブリ.configはApp.configというファイルがあれば出来上がるというものです。
そしてそのきっかけは変更後のビルドまたはリビルドです。
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-03-14 13:15
**参照元記事 より 引用**
Visual Studio プロジェクトでは、プロジェクト ディレクトリに .config ファイルを配置し、その [出力ディレクトリにコピー] プロパティを [常にコピーする] または [新しい場合はコピーする] に設定します。Visual Studio が、アセンブリをコンパイルするディレクトリにこのファイルを自動的にコピーします。

***

とあったので、ビルド関係なくコピーできる設定かな?と思ったのですが。
ビルドではこの設定がどの設定でも同動作のようでした。
(ビルドすれば実行ファイル名.configは作成もしくは再作成される)

ということは、この設定はどのような場合使用するのでしょうか?



[ メッセージ編集済み 編集者: ぴぃ子 編集日時 2008-03-14 13:35 ]
まさる
ベテラン
会議室デビュー日: 2006/12/21
投稿数: 59
お住まい・勤務地: 越後の中ほど
投稿日時: 2008-03-14 13:48
引用:

ぴぃ子さんの書き込み (2008-03-14 13:15) より:
**参照元記事 より 引用**
Visual Studio プロジェクトでは、プロジェクト ディレクトリに .config ファイルを配置し、その [出力ディレクトリにコピー] プロパティを [常にコピーする] または [新しい場合はコピーする] に設定します。Visual Studio が、アセンブリをコンパイルするディレクトリにこのファイルを自動的にコピーします。

***

とあったので、ビルド関係なくコピーできる設定かな?と思ったのですが。
ビルドではこの設定がどの設定でも同動作のようでした。
(ビルドすれば実行ファイル名.configは作成もしくは再作成される)

ということは、この設定はどのような場合使用するのでしょうか?



[ メッセージ編集済み 編集者: ぴぃ子 編集日時 2008-03-14 13:35 ]


まどかさんの回答の通りです。「ファイル名.config」ではなく、「app.config」自体をビルド時にコピーするかどうかを指定します。
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-03-14 13:55
「app.configそのもの」の通りでした。

両方存在する必要性は今のところ見出せませんが
そのうち何か思うのかもしれません。

IDEでの「接続文字列」を作成するウィンドウが便利なので
ビルドを通さないでも実行ファイル名.configへ反映できればなぁ。と思ったので。

みなさん、ありがとうございました。


[ メッセージ編集済み 編集者: ぴぃ子 編集日時 2008-03-14 13:56 ]
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2008-03-14 14:02
引用:

とあったので、ビルド関係なくコピーできる設定かな?と思ったのですが。
ビルドではこの設定がどの設定でも同動作のようでした。
(ビルドすれば実行ファイル名.configは作成もしくは再作成される)

ということは、この設定はどのような場合使用するのでしょうか?



"App.config"という名前が特殊な決まりがあり、独自の機能が働くということです。
#アセンブリ.configになるという機能

それ以外は一般的な話になります。
コピーするしないは、プロジェクト上のその単なるファイルとしての属性です。
たとえば、HogeSetting.configという独自のファイルを作成し
実行時フォルダにあるそのファイルを読み込むといったアプリの場合
「常にコピーする」「新しい場合にコピーする」にしておかないと
「ファイルが見つからない」という結果になります。

「新しい場合に」ですが、
ビルドはソースの日付が新しくなったもののみがビルドされます。
つまり、コピーされたbin\debugの下のファイルを変更しても
ソースは変更してませんからコピー(上書き)されません。
#内容を変更して実行したいが、ソースは触らないといった使い方。

スキルアップ/キャリアアップ(JOB@IT)