2012-03-06 2 views

答えて

0

あなたが正しく理解していれば、ビジュアルスタジオでビルドするときにファイルを開きたいのですが、MSBuildのコマンドラインからは開きませんか?

この場合、Visual StudioでPreBuildまたはPostBuildを指定します。

  1. 右ソリューションエクスプローラでプロジェクトを右クリックし、プロパティ
  2. を選択イベントタブ
  3. は、PREまたはPOSTは、目的のファイル
+0

なし - 私はそれでカスタムMSBuildのターゲットでcsprojを持っています。私がVisual Studioでビルドをクリックすると、ターゲットで行われている特別なアクションが発生するようにしたいと思います.Content = "StartedInVS()"のようなものです。私がlinkeコマンド(つまりmsbuild ...)から実行すると、その条件が失敗するようにしたい。だからMSBUILDはどのようにターゲットをどのようにターゲットを検出することができますか? – zekeyeehaw

+0

あなたは正しいです、私の謝罪です。私の以前の答えは間違っていて、ビルドイベントは関係なく実行されます。私はあなたの目標を達成する方法を説明する別の答えを加え、今度はそれをテストして確かめました。 – BryanJ

2
を開くためにイベントを構築する追加]を選択します

プロパティを.csprojプロジェクトファイルに追加します。例:

<PropertyGroup> 
    <FromMSBuild>false</FromMSBuild> 
</PropertyGroup> 

次に、実行するタスクで、そのプロパティを評価する条件を設定します。

もちろん
<Target Name="BeforeBuild"> 
<Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" /> 
    </Target> 

あなたが実行したときに、これは正しく(FromMSBuild)プロパティ$の設定に依存している:あなたがメモ帳を開きたい場合たとえば、ビルドは、Visual Studioをコマンドラインから実行していないときこれと同様に、コマンドラインからビルドする:

MSBuild myProject.csproj /p:FromMSBuild=true 
32

引用MSDN pageから:

Visual Studioの内部で構築し、プロパティ$(BuildingInsideVisualStudio)がtrueに設定されています。プロジェクトや.targetsファイルでこれを使用して、ビルドを異なる動作にすることができます。

それはあなたの中で使用することができる方法の例* projのか.targetsファイル:

<PropertyGroup> 
    <MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty> 
    <MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty> 
</PropertyGroup> 
関連する問題