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

时间:2018-09-07 08:42:07

标签: azure-devops build-pipeline

我正在云中的VSTS上构建一个.net核心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,但这不起作用,并且在这种配置下,该内部版本存在错误,指出:未找到任何项目。

2 个答案:

答案 0 :(得分:1)

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

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

  

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

     

Exclude patterns

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

中完成
  不需要的

隐藏文件夹。默认情况下,项目的根文件夹映射在工作空间中。此配置导致   Build Agent下载所有版本控制文件夹中的文件   您的项目。

     

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

看看这个官方tutorial

答案 1 :(得分:0)

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

创建解决方案配置 仅针对需要的项目选中“构建”列。

查看此答案“二”部分的更多详细信息:https://stackoverflow.com/a/65633356/1216612,但我建议阅读“一”部分。