先に簡単に書いておくと、
Visual Studio .NET 2003の場合:
プロジェクト右クリック → プロパティ → 共通プロパティ → ビルドイベント、
イベントコマンドラインを使ってコピー対象ファイルやコピー先を都度指定する。
Visual Studio .NET 2005の場合:
対象ファイルを右クリック → プロパティ、
「ビルドアクション」を「コンテンツ」に、
「出力ディレクトリにコピー」を「常にコピーする」又は「新しい場合はコピーする」に設定
****
こないだVS.NET2005でClickOnce開発してたとき、プロジェクトにmp3ファイルを一つ追加しておいて実行時にそのファイルを参照する必要があった。
ファイルをbin\debugなんかに直接置いてもいいんだけど、普通はプロジェクトにファイルを追加しておいて、ビルドする度に適切に実行フォルダに自動コピーすることを考えるよね。テキストファイルなんかだとプロジェクト上でダブルクリックしたらその場で編集できちゃうし、デバッグやテスト等、作業上なにかと楽だから。
VS.NET2003だと最初に書いたように「イベントコマンドライン」を自分で書けばそれが可能って事は昔教えてもらって利用してたんだけど、先週2005でたまたまいろんな所をいじってる時、対象ファイルのプロパティを設定するだけでビルド時にbinフォルダにコピーしてくれることが判明(ClickOnceのインストールパッケージにも追加される)。
VS.NET2005、細かいところも便利になってるじゃん!!w
ってか本来ならあって当たり前の機能なだけに、同時に、2003でもできるのかな?って疑問が。
てことで、さっき仕事の合間に2003で試してみた。
あれ?「ビルドイベント」項目自体はプロパティを開いてみると存在する。「出力ディレクトリにコピー」項目が無いだけ。もしかして簡単に設定できちゃう?なんて考えて「コンテンツ」って値に設定してみるんだけど、ビルドしてもbinフォルダにコピーされない。設定の仕方が悪いのかな?なんていろんなやり方を試すも、全くコピーされない。
ビルドイベントの項目には「なし」「コンパイル」「コンテンツ」「埋め込まれたリソース」がある。なしとコンテンツの違いが分からないし、んーー、やっぱりコピーされる筈だぁぁぁなんて心の中で叫びつつWeb検索とトライを繰り返すも、やっぱり駄目。。。
最終的に、海外の質問サイトで答えを知ることになった。
Dotnet4all.com - .NET: content files
> what is the difference between content and none then?
If it's content, it will be included in a setup package, AFAIK.
2003の場合、「コンテンツ」を選択しても
インストールパッケージに対象ファイルが含められるだけ。で、「なし」は文字通り何もしない。これで、ビルドイベントを使わない限りビルド毎のbinフォルダ展開は出来ないことが確定。
紛らわしい設定だ。
1時間以上調べたのにガッカリ;;
まぁ徹夜で調べ続けて結局分からない、なんてことは実際よくあることだし、
1時間程度で確定しただけラッキーって思っておいた方がいいかな^^