Ich verwende ein TFS-Erstellungsprojekt, um ein Visual Studio 2015-Projekt zu erstellen, das unter anderem eine Gulp-Datei zum Kompilieren von SASS enthält. Ich versuche, die Reihenfolge der Ereignisse mithilfe von MSBuild Tasks und Task Runner-Bindungen zu verstehen. Es scheint, dass MSBuild weiß genug, um zu erkennen und mein Standard-schluck Aufgabe Before laufen:Reihenfolge der Ereignisse - MSBuild- und Task Runner-Bindungen (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'));
});
Ich bin ein MSBuild Ziel zu verwenden, nachdem das Before Ziel zu laufen, so dass ich die generierten Dateien in dem Projekt für die Veröffentlichung kann sein:
<Target Name="CopyGulpFiles" AfterTargets="BeforeBuild">
Hier ist mein MSBuild Anruf in meinem Build .proj mit der entsprechenden Info-Datei:
<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"/>
Diese beiden Dinge scheinen in der richtigen Reihenfolge everyti laufen Ich renne sie. Das wirft jedoch einige Fragen auf: