2011-01-10 10 views
2

私は.net Webアプリケーションを作成しており、いくつかのビルドタスク、例えばmsbuildのコピータスクを持っています。アプリケーションのプロジェクトファイルを編集してタスクを追加することでこれを追加します。ビルド作業のための外部ファイル

これは問題ありませんが、外部のxmlファイルをプロジェクトファイルに使用して、メインプロジェクトファイルを参照してビルドタスクを作成する方法はありますか?私は主プロジェクトファイルを編集する必要がなく、プロジェクトファイルとビルドタスクが分離されているので、これをもっと好むでしょう。

+0

外部MSBuildファイルを実行する[MSBuildタスク]の複製が可能です。(http://stackoverflow.com/questions/1501930/msbuild-task-to-execute-an-external-msbuild-file) –

答えて

1

あなたは、単にあなたのメインのプロジェクトファイルにimportを追加することにより、任意の外部のプロジェクトまたはターゲットファイルを参照することができます。

... 
<!-- this is the default import for (c#) web project files --> 
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" /> 

<!-- import your custom project/target file here --> 
<Import Project="MyCustom.targets" Condition="Exists('MyCustom.targets')" /> 
... 

カスタムプロジェクト/ターゲットファイルがある場合でも、あなたの主なプロジェクトをビルドすることができますConditionを追加しますビルドは異なる環境で実行されるため、行方不明です。

私はローカルマシン上でFxCopおよびStyleCopターゲットを実行するのにこの方法を使用していますが、ステージング環境に変更を加えずに同じメインプロジェクトファイルを構築できます。


更新

コメントは、あなたが実際に他の方法でラウンドを動作するはず解決のためではなく探していることを示唆している

:あなたが前に、プロジェクトを変更することなく、あなたのプロジェクトをビルドした後、いくつかのステップを実行したいです構成そのもの。

この場合、Webプロジェクトのビルドを呼び出すカスタムプロジェクトを作成することをお勧めします。これは、このような何かを見ることができる:

<Project DefaultTargets="MyTargetAfterBuild"> 
    <!-- some Project attributes omitted for readability --> 

    <Target Name="MyTargetBeforeBuild" ContinueOnError="false"> 
     <Exec Command="svn export" /> 
    </Target> 

    <Target Name="Build" DependsOnTargets="MyTargetBeforeBuild"> 
     <MSBuild Projects="MyWebProject.csproj" Targets="Build" Properties="Configuration=Release" > 
     </MSBuild> 
    </Target> 

    <Target Name="MyTargetAfterBuild" DependsOnTargets="Build"> 
     <Exec Command="powershell.exe .\MyCustomScript.ps1" /> 
    </Target> 

</Project> 

あなたはより詳細な例でthis answer on a similar scenarioに興味があるかもしれません。

+0

ありがとうこれとともに。プロジェクトファイルと同じように設定された外部XMLファイルを作成することはできますか? <ターゲット名=「BeforeBuild」> <ターゲット名=「AfterBuild」> などここから私は – amateur

+0

@Niall私のビルドタスク、供給のparamsなどを参照することができます:はいあなたはどんな外部のXMLファイルを作成することができますMSBuild(またはエクステンション)が提供する 'Target'と' Task'は...しかし、あなたは別のアプローチでうまくいくかもしれないことの後にあなたのように聞こえます。詳細については、私の更新答えを見てください。 – Filburt

1

ビルド前またはビルド後のイベントで、別のビルドファイルを対象としたmsbuild.exeを呼び出すことができます。

関連する問題