簡體   English   中英

TFS 刪除,使用 minimatch 模式排除 obj 文件夾

[英]TFS drop, exclude obj folder using minimatch pattern

我正在本地設置 TFS 2015,但在我的最后一個構建步驟“發布構建工件”中遇到了問題。 出於某種原因,構建代理似乎正在歸檔舊的二進制文件,而我留下了一個巨大的文件路徑:

E:\TFSBuildAgent\_work\1a4e9e55\workspace\application\Development\project\WCF\WCF\obj\Debug\Package\Archive\Content\E_C\TFSBuildAgent\_work\1a4e9e55\workspace\application\Development\project\WCF\WCF\obj\Debug\Package\PackageTmp\bin

我正在使用示例 minimatch 模式復制文件以開始:

**\bin

我目前只是在測試,所以這不是一個永久的解決方案,但我如何復制bin文件夾中的所有二進制文件但不是obj的后代?

從研究中我認為這應該有效,但它沒有(它不匹配任何東西):

**!(obj)**\bin

我正在使用www.globtester.com進行測試。 有什么建議?

另外,我稍后會研究歸檔問題,但如果有人對此有任何指示,請隨時發表評論。 謝謝

在 VSTS 中,SDK 中內置的 URL 有兩種模式匹配。 現在大多數任務都使用馬特的回答中描述Minimatch 模式。 但是,有些使用 1.x 代理的 Powershell SDK 使用的模式。 順便說一下,該格式在 2.x Agent 的 Powershell SDK 中仍然可用。

所以這意味着有 5 種任務:

  • 1.x 代理 - Powershell SDK
  • 2.x 代理 - 節點 SDK
  • 2.x 代理 - Powershell 1 向后兼容性
  • 2.x 代理 - Powershell 3 SDK - 使用find-files
  • 2.x 代理 - Powershell 3 SDK - 使用find-match

粗體的不是 Minimatch ,而是VSTS-Task-SDK 的find-files方法中記錄的格式。

最初的問題是在 2015 年發布的,當時 2.x 代理還沒有出現。 在這種情況下,模式很可能是:

 **\bin\$(BuildConfiguration)\**\*;-:**\obj\**

-:從它前面的項目中排除項目。

根據 Microsoft 的文檔,這里是您可以使用的文件匹配模式列表。 最重要的規則是:

?

  • ? 匹配文件或目錄名稱中的任何單個字符(零次或一次)。

*+匹配

  • *+匹配文件或目錄名稱中的零個或多個字符。

@符號匹配

  • @匹配一次。

與括號( , )|匹配

  • 如果您使用帶有|括號它被視為邏輯 OR ,例如*(hello|world)表示“hello 或 world 出現零次或多次”

與雙星號匹配**

  • **遞歸通配符。 例如, /hello/**/*匹配/hello所有后代。

!排除模式

  • 領先! 將包含模式的含義更改為排除。 支持交錯排除模式。

帶有[]字符集

  • []匹配文件或目錄名稱中的一組或一系列字符。

帶有#評論

  • #開頭的模式被視為注釋。

逃跑

  • []包裝特殊字符可用於轉義文件名中的文字 glob 字符。 例如,文字文件名hello[az]可以轉義為hello[[]az]

例子

可以在“復制文件”構建步驟的Contents字段中使用以下表達式為 Web 項目創建部署包:

**\\?( .config| .dll|*.sitemap)
**\\?(. exe| .dll| .pdb| .xml|*.resx)
**\\?( .js| .css| .html| .aspx| .ascx| .asax| .Master| .cshtml|*.map)
**\\?( .gif| .png| .jpg| .ico|*.pdf)

注意:您可能需要添加更多擴展,具體取決於您的項目需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM