我正在云中的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
,但这不起作用,并且在这种配置下,该内部版本存在错误,指出:未找到任何项目。
答案 0 :(得分:1)
所有排除表达式始终优先于包含表达式,因此,如果文件同时匹配包含和排除表达式,则不包含该文件。
对于新版本的任务,将-
更改为!
。关于minimatch patterns的官方文档也明确声明:
领先!将包含模式的含义更改为排除。
尝试使用!
代替-
,然后再次测试。此外,如果您不想构建特定项目,也可以选择不下载源文件。可以在
不需要的隐藏文件夹。默认情况下,项目的根文件夹映射在工作空间中。此配置导致 Build Agent下载所有版本控制文件夹中的文件 您的项目。
如果此文件夹包含大量数据,则您的构建可能会浪费构建 系统资源,并通过下载大量文件来减慢构建过程 不需要的数据量。
看看这个官方tutorial。
答案 1 :(得分:0)
另一种解决方案是为您的包创建特定的解决方案配置,并将其用于管道任务。
创建解决方案配置 仅针对需要的项目选中“构建”列。
查看此答案“二”部分的更多详细信息:https://stackoverflow.com/a/65633356/1216612,但我建议阅读“一”部分。