gpt4 book ai didi

msbuild - 事件顺序 - MSBuild 和任务运行器绑定(bind) (Gulp)

转载 作者:行者123 更新时间:2023-12-01 18:44:04 25 4
gpt4 key购买 nike

我正在使用 TFS 构建项目来构建 Visual Studio 2015 项目,其中包含用于编译 SASS 等的 gulpfile。我试图使用 MSBuild 任务和任务运行程序绑定(bind)来理解事件的顺序。看来 MSBuild 足够了解并运行我的默认 gulp 任务 BeforeBuild:

/// <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">

这是我的构建 .proj 文件中的 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"/>

每次我运行这两件事时,它们似乎都按正确的顺序运行。但这提出了一些问题:

  • Task Runner 的“BeforeBuild”绑定(bind)是否会在 MSBuild 中的“BeforeBuild”目标之前执行?
  • 这里绑定(bind)/目标的顺序是确定的吗?
  • 使用 AfterTargets 属性能否确保在整个“BeforeBuild”阶段(目标和绑定(bind))完成后运行?
  • MSBuild 如何知道如何使用我的 Gulp 文件?我认为它必须与 Visual Studio 使用的机制相同。

最佳答案

我遇到了这样的问题:使用任务运行程序构建时一切都在本地工作,但 MSBuild 从未调用 Gulp。

我最终得到了以下解决方案,它使用我们的自定义目标 GulpBuild 扩展了 Compile 任务。在此代码段中,build 是我的 Gulp 任务的名称。

<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.

关于msbuild - 事件顺序 - MSBuild 和任务运行器绑定(bind) (Gulp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com