Я использую проект сборки TFS для создания проекта Visual Studio 2015, который содержит gulpfile для компиляции SASS между прочим. Я пытаюсь понять последовательность событий, используя команды MSBuild Tasks и Task Runner. Оказывается, что MSBuild знает достаточно, чтобы обнаружить и запустить мой по умолчанию BeforeBuild глотком задачи:Порядок событий - привязки MSBuild и Task Runner (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'));
});
Я с использованием цели MSBuild для запуска после того, как цель BeforeBuild так, что я могу включать сгенерированные файлы в проекте для публикации:
<Target Name="CopyGulpFiles" AfterTargets="BeforeBuild">
Вот мой MSBuild вызов в моей сборке .proj файл с соответствующей информацией:
<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 правильном порядке я бегу их. Это вызывает некоторые вопросы:
- Будет ли привязка «BeforeBuild» для Task Runner выполняться до цели «BeforeBuild» в MSBuild?
- Вы здесь: Определите порядок привязок/целей?
- С помощью свойства AfterTargets убедитесь, что это выполняется после завершения стадии «BeforeBuild» (цели и привязки)?
- Как MSBuild умеет использовать мой файл Gulp? Я предполагаю, что это должен быть тот же механизм, что и визуальная студия.