设置 VSTS 构建和发布以忽略项目的特定文件夹

Posted

技术标签:

【中文标题】设置 VSTS 构建和发布以忽略项目的特定文件夹【英文标题】:Set VSTS build and release to ignore specific folder of projects 【发布时间】:2019-02-12 13:55:47 【问题描述】:

我正在云端的 VSTS 上构建一个 .net core asp.net 应用程序。设置它时,它与我的其他 .net 框架构建管道不同,因为您不需要选择要构建的解决方案,而是提供可以找到项目文件的相对(通配符)路径。

对我来说,这最终是:Portal/API/**/*.csproj 问题是在这个路径中还有一些我确实想要构建为这个特定管道的一部分的项目文件。

我尝试通过执行^Portal/API/Services/IdentityServer/**/*.csproj 从构建中删除某个路径,但这没有任何效果。我真的不想直接指定我想要构建的所有项目,因为我必须添加任何应该包含的新项目(基本上除了身份服务器项目之外的所有项目)。

那么,我可以排除包含通配符路径的项目吗?

更新。 根据这个页面:

https://blogs.infosupport.com/tfs2015-build-tasks-the-wildcard-format-explained/

我应该可以写 Portal/API/**/*.csproj;-:Portal/API/Services/IdentityServer/**/*.csproj 但这不起作用,并且在此配置下,构建存在并显示错误:未找到项目。

【问题讨论】:

【参考方案1】:

所有排除表达式始终优先于包含表达式,因此如果文件同时匹配包含表达式和排除表达式,则不包含该文件。

对于新版本的任务,将-更改为!。关于minimatch patterns的官方文档也明确声明:

领先!将包含模式的含义更改为排除。

Exclude patterns

尝试使用! 而不是- 并再次测试。此外,如果您不想构建特定项目,您也可以选择不下载源文件。这可以在

中完成

Cloak 您不需要的文件夹。默认情况下,项目的根文件夹映射到工作区。这种配置导致 构建代理下载版本控制文件夹中的所有文件 你的项目。

如果此文件夹包含大量数据,您的构建可能会浪费构建 系统资源并通过下载大容量文件来减慢构建过程 它不需要的数据量。

看看这位官方tutorial。

【讨论】:

【参考方案2】:

另一种解决方案是为您的包创建特定的解决方案配置,并将其用于管道任务。

创建解决方案配置 仅检查所需项目的“构建”列。

请参阅此答案的“第二”部分的更多详细信息:https://***.com/a/65633356/1216612,尽管我建议阅读“第一”部分。

【讨论】:

以上是关于设置 VSTS 构建和发布以忽略项目的特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

VSTS 构建失败 MSB1009 项目文件不存在

仅当子目录中的文件已更改时,才运行VSTS构建任务以运行“npm build”

VSTS:如何重新排队损坏的构建和切换代理队列

以编程方式检索源文件夹列表并创建一个(如果不存在) - C# + VSTS 2017

如何在 VSTS 的发布管理中添加 AD 组以使用队列?

VSTS 发布拉取请求构建触发器