Azure devops Azure管道-文件识别模式使用(Visual Studio)解决方案文件夹的一种方式? 背景:

Azure devops Azure管道-文件识别模式使用(Visual Studio)解决方案文件夹的一种方式? 背景:,azure-devops,pattern-matching,azure-pipelines,Azure Devops,Pattern Matching,Azure Pipelines,我在同一个解决方案中有几个项目,我通过一个管道将它们打包到NuGet包中,并将它们存储在我的Azure Artifacts存储中 这些步骤是: 安装NuGet NuGet恢复 构建解决方案 运行测试 NuGet pack(具体来说,是dotnet pack,因为它们是.NET标准目标) NuGet推送(到工件存储) 但是,该解决方案包含一些我还不想打包的尚未完成的包项目以及我的测试项目,这些项目也应该被排除在外 很简单,在这种情况下,我的文件匹配模式将只包括我想要的项目的名称,如: '**/*P

我在同一个解决方案中有几个项目,我通过一个管道将它们打包到NuGet包中,并将它们存储在我的Azure Artifacts存储中

这些步骤是:

  • 安装NuGet
  • NuGet恢复
  • 构建解决方案
  • 运行测试
  • NuGet pack(具体来说,是dotnet pack,因为它们是.NET标准目标)
  • NuGet推送(到工件存储)
  • 但是,该解决方案包含一些我还不想打包的尚未完成的包项目以及我的测试项目,这些项目也应该被排除在外

    很简单,在这种情况下,我的文件匹配模式将只包括我想要的项目的名称,如:

    '**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;'
    
    但现在我想一些新的项目被添加到这个航运'集'。因此,我的模式也必须包括它们

    '**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;**/*Proj4.csproj;**/*Proj5.csproj;'
    
    正如你所看到的,这很难通用。每当有东西改变、被包含,或者如果我逆转它,每次我想排除一个项目时,我都必须修改模式

    我希望将相同的管道,或者至少是结构(尽可能多地)应用到一些相同类型的解决方案中,我希望通过一些现有的命名约定使之成为可能

    问题: 有没有办法扭转局面:

    '**/*Proj1.csproj;**/*Proj2.csproj;**/*Proj3.csproj;**/*Proj4.csproj;**/*Proj5.csproj;'
    
    进入

    其中“Packages”是VS解决方案文件夹(因为实际文件夹不在解决方案的基础内工作),最终目标是发现(并打包)“Packages”解决方案文件夹内的每个项目,并忽略其外部的所有内容

    问题在于解决方案文件夹不是路径结构的实际部分

    PS- 我曾考虑过的变通办法:

    • 在我想忽略的所有项目的名称中都有一个关键字,比如“Foo.ignore.csproj”,然后排除名称中包含“ignore”的所有项目
    • 从解决方案中卸载/删除未完成的项目,但a)我想确保它们保持在可构建和可测试状态,b)因为它们保留在存储库路径中,所以匹配模式仍然可以发现它们

    然而,我并不认为这是一个牵强的用例,它不会有一个“受支持的”解决方案(当然,我可能是错的)。或者建立了不同的“最佳实践”?

    “/Packages/.csproj;”有什么问题@grmbl理想情况下,我不必经历手动删除项目、在文件空间中移动项目并在每次需要从该Packages文件夹添加/删除项目时再次添加项目的过程。
    '**/Packages/**.csproj;' //or something very similar