[英]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 種任務:
find-files
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.