2016-07-13 8 views
7

私はTFSビルドプロジェクトを使用して、他のものの中でSASSをコンパイルするためのgulpfileを含むVisual Studio 2015プロジェクトをビルドしています。 MSBuildタスクとTask Runnerバインディングを使用してイベントのシーケンスを理解しようとしています。 MSBuildのは、私のデフォルトの一気のタスクBeforeBuildを検出し、実行するのに十分な知っていることが表示されます:イベントの順序 - MSBuildとタスクランナーのバインディング(Gulp)

/// <binding BeforeBuild='default' /> 
var gulp = require('gulp'); 
var sass = require('gulp-sass'); 
var importer = require('sass-importer-npm'); 

gulp.task('sass', function() { 
    return gulp.src([ 
    './sass/**/*.scss', 
    './node_modules/font-awesome/scss/**/*.scss' 
    ]) 
    .pipe(sass({ importer: importer }).on('error', sass.logError)) 
    .pipe(gulp.dest('./Content/css')); 
}); 

私は出版のためのプロジェクトで生成されたファイルを含めることができるようにBeforeBuild目標後に実行するMSBuildのターゲットを使用しています:これら二つのことが正しい順序で実行するように見える

<ItemGroup> 
    <ProjectsToBuild Include="$(MSBuildThisFileDirectory)..\MyProject.sln"> 
     <AdditionalProperties> 
     VisualStudioVersion=$(VisualStudioVersion); 
     OutputPath=$(OutputRoot); 
     WebPublishMethod=FileSystem; 
     publishUrl=$(StageFolder); 
     DeployOnBuild=false; 
     DeployTarget=WebPublish; 
     PublishProfile=$(MSBuildThisFileFullPath) 
     </AdditionalProperties> 
    </ProjectsToBuild> 
    </ItemGroup> 

<MSBuild Projects="@(ProjectsToBuild)" Properties="Configuration=Dev"/> 

everyti:ここ

<Target Name="CopyGulpFiles" AfterTargets="BeforeBuild"> 

は、関連する情報との私のビルド.projファイルの私のMSBuildの呼び出しです私はそれらを実行します。これはいくつかの質問を提起します:

  • タスクランナーの 'BeforeBuild'バインディングは、MSBuildの 'BeforeBuild'ターゲットの前に実行されますか?
  • ここでバインディング/ターゲットの順序は決定的ですか?
  • AfterTargetsプロパティを使用すると、BeforeBuildステージ全体(ターゲットとバインディング)が完了した後でこれが実行されますか?
  • MSBuildはGulpファイルの使用方法をどのように知っていますか?私はそれがビジュアルスタジオの用途と同じメカニズムでなければならないと仮定します。

答えて

1

タスクランナーでビルドするときにすべてがローカルで機能していたが、GulpがMSBuildによって呼び出されなかったという問題が発生した。

私のカスタムターゲットGulpBuildCompileタスクを拡張する次のソリューションが完成しました。このスニペットでは、私のGulpタスクの名前はbuildです。

<PropertyGroup> 
    <CompileDependsOn> 
     $(CompileDependsOn); 
     GulpBuild; 
    </CompileDependsOn> 
</PropertyGroup> 
<Target Name="GulpBuild"> 
    <Exec Command="npm install" /> 
    <Exec Command="gulp build" /> 
</Target> 

Steve Cadwallader's post was very helpful in solving this issue.

  • BeforeBuildターゲットは常にMSBuildのでBeforeBuild前に実行する必要があります。タスクランナーはVisual Studio専用ですので、Visual Studioでビルドする場合にのみ発生します。
  • This will help with your questions about ordering.
関連する問題