この質問に対する他の回答は、VisualStudioではなくMSBuildを直接使用しているか、カスタムビルドステップまたはビルドイベントを追加できる既存のプロジェクトがあると想定する傾向があります(ビルドイベントタイプのソリューションではエラーが発生しやすいことがわかりました。コピーが必要な場合は、必ずファイルをコピーしてください)。
コピーのみを行うVisualStudioプロジェクトが必要な場合は、Makefileプロジェクトを備えたストックVisualStudioを使用してこれを行うことができます。
少し間違った名前のMakefileプロジェクトは、コマンドラインから実行できるすべてのことを実行できます。明らかに、これは、ファイルのみをコピーするMakefileプロジェクトを作成できることを意味します。Makefileプロジェクトのプロパティ⇒構成プロパティ⇒NMakeセクションには、ビルド、再ビルド、およびクリーンアクションのフィールドがあります。これらには、単純な古いバッチファイルコマンドを入力できます。ビルドのたびに、VisualStudioは適切なフィールドから一時バッチファイルを作成し、cmdを使用して実行します。警告64ビットマシンで32ビットのcmdインタープリターを取得するため、魔法のsysnativeを使用する必要があります64ビットWindowsコマンドまたはDLLにアクセスする場合はディレクトリ(これがどこかに文書化されているかどうかわからないため、常にそうであるとは限りません-バッチスクリプトは、cmdの変更に対するビット数に対して堅牢である必要があります。
どのcmdまたはOS(32ビットまたは64ビット)がコードを実行するかを事前に知らなくても、64ビットシステムファイルを必要とするバッチコードの例:
if /i "%programfiles%"=="%programfiles(x86)%" if /i not "%programfiles%"=="%programw6432%" (
REM 32 bit cmd on 64-bit computer
REM Use the 'sysnative' fake directory to get to 64-bit system32 files
) else (
if /i not "%programfiles%"=="%programfiles(x86)%" if /i "%programfiles%"=="%programw6432%" (
REM 64 bit cmd on 64-bit computer
REM Use the 'system32' directory to get to 64-bit system32 files
) else (
echo "Cannot do 64-bit on 32-bit computer"
copy foobar
)
)
(上記の「copyfoobar」行は失敗し、ビルドが失敗します。)
VisualStudio(およびMSBuild)は常にMakefileプロジェクトを実行することに注意してください-出力ファイルのタイムスタンプをチェックせず、代わりにそのジョブを他のビルドツール(nmake、cmake、make、ant、maven、等。)。この場合、単純なコピーコマンドがあり、コピーを実行するかどうかをチェックするプログラムがないため、コピーはすべてのビルドで発生します。
VisualStudioが常にmakefileプロジェクトを実行しているということは、 F5キーを押してプロジェクトをデバッグするたびに、VisualStudioは、プロジェクトが終了したことを通知するダイアログボックス(指示がない場合)の不適切な表現で煩わしいことを意味します。日付の、そしてあなたがそれを再び構築しなければならないこと。VisualStudioにダイアログを表示しないように指示すると、実行可能ファイルを実行する前に、確認せずにコピーを実行します。