2009-03-10 37 views
17

ビルドプロセスでは、プロジェクトごとにPost Buildイベントを使用して、実行可能ファイルを別のデプロイメントディレクトリにコピーします。それはちょうどpeachyで動作しますが、問題は、クリーンソリューション/クリーンプロジェクトを実行した後に失効したファイルの問題に遭遇することです。私はコピーされたファイルを削除する "クリーン"イベントを設定したいと思います.Visual Studio 2008はプロジェクトのプロパティページでオプションを提供していないようです。Visual Studio 2008でカスタムクリーン(ポストクリーン)イベントを作成する方法は?

それはあります

Build Events: 
    Pre-Build Event 
    Pre-Link Event 
    Post-Build Event 
Custom Build Step 
    General 

私が見つけるしたいどのようなプロジェクトを洗浄する際に任意のコマンドラインを実行するためのいくつかの方法です。

答えて

1

.csprojファイルを手動で編集し、 "AfterClean"ターゲットを追加する必要があります。

+0

Scott - 「AfterClean」ターゲットを追加する方法を詳しく教えてください。 – Marc

+0

あなたは、.vsproj - not .csprojを意味しますか? – Marc

1

残念なことに、カスタムクリーンアップ手順を挿入する方法は記載されていません。ビルド前のイベントでアウトプットをクリーンアップすることはできますが、クリーンアップした直後にアーチファクトを残してしまいます。 MSDN、ここでは様々なビルドステップのための呼び出しの順序であるから、

  1. ビルド前イベント
  2. カスタム個々のファイルに、手順
  3. プロキシジェネレータを構築
  4. MIDL
  5. リソースコンパイラ
  6. C/C++コンパイラ
  7. Pre-リンクイベント
  8. リンカーまたは(適切な)図書館プロジェクト
  9. 展開ツールの
  10. BSCMAKE
  11. カスタムビルドステップ。
  12. ビルド後のイベント

    MSDN:Understanding custom build steps

+0

ビルド前にクリーンアップスクリプトを作成し、ビルド後のみビルドを設定し、コードに基本的な構文エラーを意図的に書き込んでください。ビルド(ビルド前にビルドを行います。)クリーンプロジェクト(通常のクリーンアップ)。 – Kache

7

私はこれが古い質問ですけど、Googleは、私は正確に同じ問題を調査している間に打つと、​​それが来たので、私は」とにかくそれに答える。 :-)

Visual C++プロジェクトでは、「一般的な」プロジェクト構成プロパティの下にある「削除時に削除する拡張子」セクションにファイルを追加する必要があります。拡張機能が必要だと主張しているにもかかわらず、実際にはglobを使用しており、幸いにフルパスを受け入れ、MSBuild変数を拡張します。あなたはディレクトリをこの方法で削除することができた場合

$(ProjectDir)\deployment\*.*

が、私はわからないんだけど、それは、少なくともファイルを取得することができます。これは私のために働きました。

+3

これは私のために働いていません。 VS 2012を使って完全なパスも相対的なものも指定できません – garlix

31

csprojファイルでMSBuildターゲット構文を使用できます。 例:

<Target Name="AfterClean"> 
    <Delete Files="$(OutDir)\$(TargetName).exe" ContinueOnError="true" /> 
    </Target> 

あなたの編集はきれいです。csprojファイルをMSBuildチームのブログで説明されているVisual Studio IDEに直接追加しますが、これは私の最初の投稿ですので、ハイパーリンクは1つしか含めることができません。 (簡単に:プロジェクトをアンロードし、右クリックして "Edit [project] .csproj"というエントリを参照してください...あなたのcsprojは要素と属性に関するintellisenseを持つxmlファイルとしてIDEに表示されます。 )

カスタムターゲットの完全なリストはここにある:http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx

+1

サイドノート:メモ帳[++]で.csprojファイルを編集して保存すると、Visual Studioがそれを検出してプロジェクトをリロードします。複数の絶え間ない試行錯誤の間、これは少し速かった。しかし、インテリセンスはありません。 – goodeye

+3

質問には[C++]と[visual-C++]というタグが付いています。これは '.csproj'ファイルではなく' .vcproj'ファイルを持つことを意味します。ファイル形式が異なるように見える – user1354557

0

他の人は私が望んでいた正確に何をしていない、と私はより良い方法を発見しました。 VS2010でC++ Win32プロジェクトでテストされているプロジェクトプロパティ - >構成プロパティ - >カスタムビルドセットアップ。カスタムコマンドラインを追加して、VSの前または後にコマンドを実行する操作をVSに指示できます。

+2

機能がCleanイベントで機能しているようではありません。 CppClean、CoreCleanなどの他のクリーンイベントがあります。私はそれらをすべて試す時間がなかった。多分私は間違いをした。 – Samuel

1

「プロジェクトプロパティ - >構成プロパティ - >カスタムビルドセットアップ」を使用する場合は、「出力」フィールドに入力する必要があります。それ以外の場合は実行されません。

から:

http://blogs.msdn.com/b/visualstudio/archive/2010/04/26/custom-build-steps-tools-and-events.aspx

「出力プロパティは、ファイルのセミコロン区切りのリストで、カスタムビルドステップの実行の一部として生成されているものは何でもファイルをリストする必要があり、あなたのままにした場合。 MSBuildはアウトプットがないと判断するので、カスタムビルドステップは実行されません。ステップがファイルを生成しないにもかかわらず、すべてのビルドで実行したい場合は、偽ファイル名を作成しますこのファイルは決して存在しないので、MSBuildはカスタムビルドステップが古くなっていると常に判断するので、このトリックだ。

関連する問題