共用方式為


使用 SolutionPackager 工具壓縮和解壓縮解決方案檔案

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

SolutionPackager 工具可將 Microsoft Dynamics 365 壓縮的解決方案檔案以可逆方式分解成多個 XML 檔案和其他檔案,讓這些檔案可由原始檔控制系統容易管理。 下節顯示如何執行工具及如何將此工具用於受管理和未受管理的解決方案。

本主題內容

在何處尋找 SolutionPackager 工具

SolutionPackager 命令列引數

使用 /map 命令引數

  • 資料夾對應

  • 檔案對檔案對應

  • 檔案對路徑對應

  • 範例對應

受管理和未受管理的解決方案

在何處尋找 SolutionPackager 工具

SolutionPackager.exe 工具可以在 Microsoft Dynamics CRM SDK 下載的 Bin 資料夾中找到。下載 Microsoft Dynamics CRM SDK 套件。

SolutionPackager 命令列引數

SolutionPackager 是命令列工具,可利用下表列出的參數叫用。

引數

描述

/action: {Extract|Pack}

必要。 要執行的動作。 動作可以是解壓縮解決方案 .zip 檔案至資料夾,或將資料夾壓縮至 .zip 檔案。

/zipfile: <file path>

必要。 解決方案 .zip 檔案的路徑和名稱。 當解壓縮時,檔案必須存在且從中讀取。 壓縮時,會取代檔案。

/folder: <folder path>

必要。 資料夾的路徑。 當解壓縮時,會建立此資料夾並使用元件檔案填入。 當壓縮時,此資料夾必須已經存在且包含先前解壓縮的元件檔案。

/packagetype: {Unmanaged|Managed|Both}

選擇性。 要處理的套件類型。 預設值為 Unmanaged。 因為可從 .zip 檔案或元件檔內讀取套件類型,在大部分情況下可以省略此引數。 當擷取時,指定 Both,受管理和未受管理的解決方案 .zip 檔案必須存在且處理成單一資料夾。 當壓縮時,指定 Both,受管理和未受管理的解決方案 .zip 檔案會從一個資料夾產生。 如需詳細資訊,請參閱本主題後面有關處理受管理和未受管理的解決方案的章節。

/allowWrite:{Yes|No}

選擇性。 預設值是 Yes。 此引數只在解壓縮時使用。 當 /allowWrite:No 指定時,工具會執行所有作業,但禁止寫入或刪除任何檔案。 解壓縮作業可以安全評估,不會覆寫或刪除任何現有的檔案。

/allowDelete:{Yes|No|Prompt}

選擇性。 預設值是 Prompt。 此引數只在解壓縮時使用。 指定 /allowDelete:Yes 時,會自動刪除 /folder 參數指定之資料夾不應該出現的任何檔案。 指定 /allowDelete:No 時,不會進行刪除。 當 /allowDelete:Prompt 指定時,透過主控台提示使用者允許或拒絕所有刪除工作。 請注意,若指定 /allowWrite:No,不會進行刪除,即使同時也指定 /allowDelete:Yes。

/clobber

選擇性。 此引數只在解壓縮時使用。 當 /clobber 指定時,已設定為唯讀屬性的檔案會遭到覆寫或刪除。 未指定時,具有唯讀屬性的檔案不會被覆寫或刪除。

/errorlevel: {Off|Error|Warning|Info|Verbose}

選擇性。 預設值是 Info。 此引數指示記錄資訊等級為輸出。

/map: <file path>

選擇性。 包含檔案對應指示詞的 .xml 檔案路徑和名稱。 在解壓縮期間使用時,一般從 /folder 參數指定的資料夾內讀取的檔案,是從對應檔中指定的替代位置讀取。 在壓縮作業時,符合指示詞的檔案不會寫入。

/nologo

選擇性。 可在執行階段抑制橫幅廣告。

/log: <file path>

選擇性。 記錄檔的路徑和名稱。 如果檔案已存在,新記錄資訊會附加至檔案。

@ <file path>

選擇性。 包含工具命令列引數的檔案的路徑和名稱。

/sourceLoc: <string>

選擇性。 此引數產生範本資源檔案,且只在解壓縮時有效。

可能的值是 auto 或要匯出的語言 LCID/ISO 代碼。 使用此引述時,從特定地區設定的字串資源解壓縮為中性 .resx 檔案。 如果指定 auto 或只指定參數完整或簡短格式,則使用基礎地區設定或解決方案。 您可以使用命令的簡短格式:/src。

/localize

選擇性。 解壓縮或合併所有字串資源到 .resx 檔案。 您可以使用命令的簡短格式:/loc。

使用 /map 命令引數

以下討論詳述 SolutionPackager 工具的 /map 引數用法。

在自動建置系統中建立的檔案,例如 .xapSilverlight 檔案和外掛程式組件,通常不會簽入原始檔控制中。 Web 資源可能已經出現在原始檔控制中與 SolutionPackager 工具不是直接相容的位置。 透過包括 /map 參數,可以指示 SolutionPackager 工具從替代位置讀取以及包裝這些檔案,而不是從一般 Extract 資料夾內。/map 參數必須指定名稱和路徑包含對應指示詞的 XML 檔案路徑和名稱,指示 SolutionPackager 以名稱和路徑符合檔案,並指出替代位置找到相符的檔案。 下列資訊對所有指示詞同等適用。

  • 可列出多個指示詞,包括將符合相同檔案的指示詞。 檔案中先列出的指示詞優先於後列出的指示詞。

  • 如果檔案符合任何指示詞,必須在至少一個替代位置找到它。 如果沒有相符替代項目,SolutionPackager 會發出錯誤。

  • 資料夾與檔案路徑可以是絕對或相對的。 相對路徑一律從 /folder 參數指定的資料夾評估。

  • 使用 %variable% 語法,可以指定環境變數。

  • 資料夾萬用字元「**」可用來表示「在任何子資料夾中」。 它只可以做為路徑的最後部分,例如:「c:\folderA\**」。

  • 檔案名稱萬用字元只能在格式 “*.ext” 中或「*.*」中使用。 不支援其他模式。

此處描述三種類型的指示詞對應以及顯示如何使用這些指示詞的範例。

資料夾對應

下表提供資料夾對應的詳細資訊。

Xml 格式

<Folder map="folderA" to="folderB" />

描述

符合「folderA」的檔案路徑會切換為「folderB」。

  • 每一個的子資料夾階層必須完全符合。

  • 不支援資料夾萬用字元。

  • 不可以指定檔案名稱。

範例

<Folder map="folderA" to="folderB" />
<Folder map="folderA\folderB" to="..\..\folderC\" />
<Folder map="WebResources\subFolder" to="%base%\WebResources" />

檔案對檔案對應

下表提供檔案對檔案對應的詳細資訊。

Xml 格式

<FileToFile map="path\filename.ext" to="path\filename.ext" />

描述

符合 map 參數的任何檔案將從 to 參數指定的名稱和路徑讀取。

對於 map 參數:

  • 必須指定檔案名稱。 路徑是選擇性的。 如果未指定路徑,從任何資料夾的檔案都可以比對。

  • 不支援檔案名稱萬用字元。

  • 支援資料夾萬用字元。

對於 to 參數:

  • 必須指定檔案名稱和路徑。

  • 檔案名稱可能與 map 參數指定的名稱不同。

  • 不支援檔案名稱萬用字元。

  • 支援資料夾萬用字元。

範例

<FileToFile map="assembly.dll" to="c:\path\folder\assembly.dll" />
<FileToFile map="PluginAssemblies\**\this.dll" to="..\..\Plugins\**\that.dll" />
<FileToFile map="Webresrouces\ardvark.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\aardvark.jpg" />

檔案對路徑對應

下表提供檔案對路徑對應的詳細資訊。

Xml 格式

<FileToPath map="path\filename.ext" to="path" />

描述

符合 map 參數的任何檔案會從 to 參數指定的路徑讀取。

對於 map 參數:

  • 必須指定檔案名稱。 路徑是選擇性的。 如果未指定路徑,從任何資料夾的檔案都可以比對。

  • 支援檔案名稱萬用字元。

  • 支援資料夾萬用字元。

對於 to 參數:

  • 必須指定路徑。

  • 支援資料夾萬用字元。

  • 不可以指定檔案名稱。

範例

<FileToPath map="assembly.dll" to="c:\path\folder" />
<FileToPath map="PluginAssemblies\**\this.dll" to="..\..\Plugins\bin\**" />
<FileToPath map="*.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\" />
<FileToPath map="*.*" to="..\..\%ARCH%\%TYPE%\drop" />

範例對應

下列 XML 程式碼範例顯示完整對應檔案,讓 SolutionPackager 工具從名為 CRMDevTookitSample 的 開發人員工具套件 專案讀取任何 Web 資源和兩個預設產生的組件。

<?xml version="1.0" encoding="utf-8"?>
<Mapping>
       <!-- Match specific named files to an alternate folder -->
       <FileToFile map="CRMDevTookitSamplePlugins.dll" to="..\..\Plugins\bin\**\CRMDevTookitSample.plugins.dll" />
       <FileToFile map="CRMDevTookitSampleWorkflow.dll" to="..\..\Workflow\bin\**\CRMDevTookitSample.Workflow.dll" />
       <!-- Match any file in and under WebResources to an alternate set of sub-folders -->
       <FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />
       <FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />
</Mapping>

受管理和未受管理的解決方案

Microsoft Dynamics 365 壓縮的解決方案 (.zip) 檔案可以兩種類型的其中一個匯出,如此處顯示。

  • 受管理的解決方案
    已完成的解決方案準備匯入組織。 當匯入,無法新增或移除元件,但它們可以選擇性允許進一步自訂。 在解決方案開發完成時,這是建議選項。
  • 未受管理的解決方案
    開啟解決方案,沒有限制新增、移除或修改內容。 在解決方案開發期間,這是建議選項。

根據其類型,受管理或未受管理,壓縮解決方案檔案的格式將會不同。SolutionPackager 可處理任何類型的壓縮解決方案檔案。 不過,工具不能轉換類型。 解決方案檔案轉換成其他類型的唯一方式,例如從未受管理轉換成受管理,是透過將未受管理的解決方案 .zip 檔案匯入 Microsoft Dynamics 365 伺服器,然後匯出解決方案為受管理的解決方案。

透過 /PackageType:Both 參數,SolutionPackager 可處理受管理和未受管理的解決方案 .zip 檔案做為合併集合。 若要執行此作業,解決方案必須匯出兩次為每個類型,包括將 .zip 檔案命名如下。

未受管理的 .zip 檔案:AnyName.zip

受管理的 .zip 檔案:AnyName_managed.zip

工具會假設受管理的 zip 檔案與未受管理檔案位於相同資料夾中,和解壓縮兩個檔案至單一資料夾,同時保留受管理和未受管理元件存在的差異。

在解決方案解壓縮為未受管理和受管理之後,使用 /PackageType 參數指定要建立的類型,可從該單一資料夾壓縮兩個類型或個別壓縮每個類型。 當指定兩者時,使用上述命名慣例,會產生兩個 .zip 檔案。 從兩個受管理和未受管理資料夾壓縮時,如果 /PackageType 參數遺失,預設會產生一個未受管理的 .zip 檔案。

疑難排解​​

如果您使用 Microsoft Visual Studio 2012 編輯解決方案封裝程式建立的資源檔案,可能會在您重新封裝時收到訊息,就像這個:「無法判斷資源檔案 <filename>.resx 版本 id,必須從 solutionpackager.exe 工具匯出資源檔案,才能在壓縮程序中使用」。這是因為 Visual Studio 將資料檔案的中繼資料標籤取代為資料標籤而發生。

因應措施

  1. 在您最喜愛的文字編輯器中開啟資源檔案並尋找和更新下列標記:

    <data name="Source LCID" xml:space="preserve">
    <data name="Source file" xml:space="preserve">
    <data name="Source package type" xml:space="preserve">
    <data name="SolutionPackager Version" mimetype="application/x-microsoft.net.object.binary.base64">
    
  2. 將節點名稱從 <data> 變更為 <metadata>

    例如,這個字串:

    <data name="Source LCID" xml:space="preserve">
      <value>1033</value>
    </data> 
    

    變更為:

    <metadata name="Source LCID" xml:space="preserve">
      <value>1033</value>
    </metadata>
    

這允許解決方案封裝程式讀取與匯入資源檔案。 只在使用 Visual Studio 資源編輯器時觀察到此問題。

另請參閱

團隊開發的解決方案工具
使用原始檔控制與解決方案檔案
Solution component file reference (SolutionPackager)
解決方案簡介

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權