語言

GenerateApplicationManifest 任務

產生 ClickOnce 應用程式清單或原生清單。 原生清單透過定義元件的唯一身份,並識別構成該元件的所有組件與檔案來描述該元件。 ClickOnce 應用程式清單透過標示應用程式的入口點及指定應用程式的安全等級來擴展原生清單。

Parameters

下表說明任務 GenerateApplicationManifest 的參數。

參數 Description
AssemblyName 選擇性 String 參數。

指定 Name 產生清單的組裝身份欄位。 若未指定此參數,則由 OR InputManifest 參數推斷EntryPoint名稱。 若無法建立名稱,任務會拋出錯誤。
AssemblyVersion 選擇性 String 參數。

指定 Version 產生清單的組裝身份欄位。 若未指定此參數,則使用預設值「1.0.0.0」。
ClrVersion 選擇性 String 參數。

指定應用程式所需的最低通用語言執行時(CLR)版本。 預設值為建置系統所使用的 CLR 版本。 如果任務產生的是原生清單,則忽略此參數。
ConfigFile 選擇性 ITaskItem[] 參數。

指定包含應用程式設定檔的項目。 如果任務產生的是原生清單,則忽略此參數。
Dependencies 選擇性 ITaskItem[] 參數。

指定一個項目清單,定義產生清單中相依組件的集合。 每個項目還可以透過項目中繼資料進一步描述,以指示額外的部署狀態及依賴類型。 更多資訊請參閱 項目元資料。
Description 選擇性 String 參數。

指定應用程式或元件的描述。
EntryPoint 選擇性 ITaskItem[] 參數。

指定一個項目,指示產生清單組件的入口點。

對於 ClickOnce 應用程式清單,此參數指定執行應用程式時啟動的組件語言。
ErrorReportUrl 選擇性 System.String 參數。

指定在 ClickOnce 安裝錯誤回報時,對話框中顯示的網頁網址。
FileAssociations 選擇性 ITaskItem[] 參數。

指定與 ClickOnce 部署清單相關的一種或多種檔案類型清單。

檔案關聯僅在針對 .NET Framework 3.5 或更新版本時有效。
Files 選擇性 ITaskItem[] 參數。

要放進清單裡的檔案。 指定每個檔案的完整路徑。
HostInBrowser 選擇性 Boolean 參數。

若 true,應用程式將託管於瀏覽器中(如同 WPF 網頁瀏覽器應用程式)。
IconFile 選擇性 ITaskItem[] 參數。

表示應用程式圖示檔案。 應用程式圖示會在產生的應用程式清單中表達,並用於 開始選單 及 新增/移除程式 對話框。 若未指定此輸入,則使用預設圖示。 如果任務產生的是原生清單,則忽略此參數。
InputManifest 選擇性 ITaskItem 參數。

表示作為清單產生器基礎的輸入 XML 文件。 這使得結構化資料如應用安全或自訂清單定義能反映在輸出清單中。 XML 文件中的根元素必須是 asmv1 命名空間中的組合節點。
IsolatedComReferences 選擇性 ITaskItem[] 參數。

指定在產生清單中隔離的 COM 元件。 此參數支援隔離 COM 元件以進行「免註冊 COM」部署。 其運作方式是自動產生符合標準 COM 登記定義的清單。 然而,COM 元件必須在建置機上註冊,才能正常運作。
LauncherBasedDeployment 可選的布林參數。

在建置 Core 3.1、.NET 5 及以後版本時,將此設定為 True .NET,以確保在建置應用程式主機執行檔後,應用程式可執行檔名稱會被重新命名為預期的執行檔名稱 apphost.exe。
ManifestType 選擇性 String 參數。

指定要產生哪種類型的清單。 此參數可接受下列值:

- Native
- ClickOnce

若未指定此參數,任務預設為 ClickOnce。
MaxTargetPath 選擇性 String 參數。

指定 ClickOnce 應用程式部署中檔案路徑的最大允許長度。 若指定此值,應用程式中每個檔案路徑的長度會依此限制進行檢查。 任何超過限制的物品都會在建造警告中提高。 若未指定或輸入為零,則不進行檢查。 如果任務產生的是原生清單,則忽略此參數。
OSVersion 選擇性 String 參數。

指定應用程式所需的最低作業系統版本。 若未指定此參數,則使用「4.10.0.0」值,即 .NET 框架中最小支援的作業系統。 如果任務產生的是原生 manifest,則會忽略這個輸入。
OutputManifest 選用 ITaskItem 輸出參數。

指定產生的輸出清單檔案名稱。 若未指定此參數,輸出檔案名稱將從產生清單的身份推斷出。
Platform 選擇性 String 參數。

指定應用程式的目標平台。 此參數可接受下列值:

- AnyCPU
- x86
- x64
- Itanium

若未指定此參數,任務預設為 AnyCPU。
Product 選擇性 String 參數。

指定應用程式的名稱。 若未指定此參數,名稱則由產生清單的身份推斷。 這個名稱用於 開始 選單中的捷徑名稱,並且是新增 或移除程式 對話框中出現名稱的一部分。
Publisher 選擇性 String 參數。

指定應用程式的出版者。 若未指定此參數,則可從註冊使用者推斷名稱或產生清單的身份。 此名稱用於 開始 選單中的資料夾名稱,並包含在 新增或移除程式 對話框中出現的名稱。
RequiresMinimumFramework35SP1 選擇性 Boolean 參數。

若屬實,該應用程式需使用 .NET Framework 3.5 SP1 或較新版本。
TargetCulture 選擇性 String 參數。

識別應用程式的文化,並指定 Language 產生清單的組裝身份欄位。 若未指定此參數,則假設該應用是培養不變的。
TargetFrameworkMoniker 選擇性 String 參數。

指定目標框架名稱。
TargetFrameworkProfile 選擇性 String 參數。

指定目標框架配置檔。
TargetFrameworkSubset 選擇性 String 參數。

指定 .NET 框架子集的目標名稱。
TargetFrameworkVersion 選擇性 String 參數。

指定專案的目標 .NET 框架。
TrustInfoFile 選擇性 ITaskItem 參數。

表示一份指定應用程式安全性的 XML 文件。 XML 文件中的根元素必須是 asmv2 命名空間中的 trustInfo 節點。 如果任務產生的是原生清單,則忽略此參數。
UseApplicationTrust 選擇性 Boolean 參數。

若為真,則 Product、 Publisher和 SupportUrl 屬性會寫入應用程式 manifest。

備註

除了上面列出的參數之外,此工作還會繼承類別的GenerateManifestBase參數,而類別本身會繼承類別。Task 關於任務類別的參數列表,請參見 任務基底類別。

關於如何使用此 GenerateDeploymentManifest 任務,請參閱 GenerateApplicationManifest 任務。

相依與檔案的輸入可進一步裝飾項目元資料,以指定每個項目的額外部署狀態。

項目元數據

中繼資料名稱 Description
DependencyType 顯示相依性是隨應用程式發布並安裝,還是作為前置條件。 此元資料適用於所有相依關係,但不用於檔案。 此元資料可用的值為:

- Install
- Prerequisite

安裝是預設值。
AssemblyType 表示該相依是管理組件還是原生組件。 此元資料適用於所有相依關係,但不用於檔案。 此元資料可用的值為:

- Managed
- Native
- Unspecified

Unspecified 是預設值,表示清單產生器會自動判定組裝裝置類型。
Group 表示該群組用於按需下載額外檔案。 群組名稱由應用程式定義,可以是任何字串。 空字串表示該檔案不屬於預設的下載群組。 不在群組中的檔案會包含在初始應用程式下載中。 群組中的檔案只有在應用程式 System.Deployment.Application明確請求時才會下載。

此元資料適用於所有檔案,其中 IsDataFile 為 false ,且所有相依關係 ,其中 DependencyType 為 Install。
TargetPath 指定在產生清單中如何定義路徑。 此屬性對所有檔案皆有效。 若未指定此屬性,則使用項目規格。 此屬性對所有值 DependencyType 為 Install的檔案與相依關係皆有效。
IsDataFile 一個 Boolean 表示該檔案是否為資料檔案的元資料值。 資料檔案的特殊之處在於它會在應用程式更新之間遷移。 此元資料僅適用於檔案。 False 為預設值。

範例 1

此範例使用任務 GenerateApplicationManifest 產生 ClickOnce 應用程式清單,並使用 GenerateDeploymentManifest 任務產生單一組件應用程式的部署清單。 接著它會用任務 SignFile 來簽署清單。

這說明了最簡單的清單產生情境,即 ClickOnce 清單是為單一程式產生的。 預設名稱與身份會從清單的組裝推斷。

注意

在下方的範例中,所有應用程式二進位檔都是預先建置的,以專注於 manifest 產生的面向。 此範例產生一個完整運作的 ClickOnce 部署。

注意

關於本範例中任務所用SignFile屬性的更多資訊Thumbprint,請參見 SignFile 任務。

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
    </PropertyGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            EntryPoint="@(EntryPoint)">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
            EntryPoint="@(ApplicationManifest)">
            <Output
                ItemName="DeployManifest"
                TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

範例 2

此範例使用 和 GenerateApplicationManifestGenerateDeploymentManifest 任務來產生具有單一組件的應用程式的 ClickOnce 應用程式與部署清單,並指定清單的名稱與身份。

此範例與前述類似,但清單的名稱與身份被明確指定。 此外,這個範例是設定為線上應用程式,而非已安裝的應用程式。

注意

在下方的範例中,所有應用程式二進位檔都是預先建置的,以專注於 manifest 產生的面向。 此範例產生一個完整運作的 ClickOnce 部署。

注意

關於本範例中任務所用SignFile屬性的更多資訊Thumbprint,請參見 SignFile 任務。

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
    </PropertyGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            AssemblyName="SimpleWinApp.exe"
            AssemblyVersion="1.0.0.0"
            EntryPoint="@(EntryPoint)"
            OutputManifest="SimpleWinApp.exe.manifest">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
                AssemblyName="SimpleWinApp.application"
                AssemblyVersion="1.0.0.0"
                EntryPoint="@(ApplicationManifest)"
                Install="false"
                OutputManifest="SimpleWinApp.application">
                <Output
                    ItemName="DeployManifest"
                    TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

範例 3

此範例使用 與 GenerateDeploymentManifest 任務GenerateApplicationManifest來產生包含多個檔案與組件的應用程式的 ClickOnce 應用程式與部署清單。

注意

在下方的範例中,所有應用程式二進位檔都是預先建置的,以專注於 manifest 產生的面向。 此範例產生一個完整運作的 ClickOnce 部署。

注意

關於本範例中任務所用SignFile屬性的更多資訊Thumbprint,請參見 SignFile 任務。

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
        <DeployUrl>
            <!-- Insert the deployment URL here -->
        </DeployUrl>
        <SupportUrl>
            <!-- Insert the support URL here -->
        </SupportUrl>
    </PropertyGroup>

    <Target Name="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe"/>
        <Dependency Include="ClassLibrary1.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
        </Dependency>
        <Dependency Include="ClassLibrary2.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
            <Group>Secondary</Group>
        </Dependency>
        <Dependency Include="MyAddIn1.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
            <TargetPath>Addins\MyAddIn1.dll</TargetPath>
        </Dependency>
        <Dependency Include="ClassLibrary3.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Prerequisite</DependencyType>
        </Dependency>

        <File Include="Text1.txt">
            <TargetPath>Text\Text1.txt</TargetPath>
            <Group>Text</Group>
        </File>
        <File Include="DataFile1.xml ">
            <TargetPath>Data\DataFile1.xml</TargetPath>
            <IsDataFile>true</IsDataFile>
        </File>

        <IconFile Include="Heart.ico"/>
        <ConfigFile Include="app.config">
            <TargetPath>SimpleWinApp.exe.config</TargetPath>
        </ConfigFile>
        <BaseManifest Include="app.manifest"/>
    </ItemGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            AssemblyName="SimpleWinApp.exe"
            AssemblyVersion="1.0.0.0"
            ConfigFile="@(ConfigFile)"
            Dependencies="@(Dependency)"
            Description="TestApp"
            EntryPoint="@(EntryPoint)"
            Files="@(File)"
            IconFile="@(IconFile)"
            InputManifest="@(BaseManifest)"
            OutputManifest="SimpleWinApp.exe.manifest">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
            AssemblyName="SimpleWinApp.application"
            AssemblyVersion="1.0.0.0"
            DeploymentUrl="$(DeployToUrl)"
            Description="TestDeploy"
            EntryPoint="@(ApplicationManifest)"
            Install="true"
            OutputManifest="SimpleWinApp.application"
            Product="SimpleWinApp"
            Publisher="Microsoft"
            SupportUrl="$(SupportUrl)"
            UpdateEnabled="true"
            UpdateInterval="3"
            UpdateMode="Background"
            UpdateUnit="weeks">
            <Output
                ItemName="DeployManifest"
                TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

範例 4

此範例使用任務 GenerateApplicationManifest 產生應用程式 Test.exe的原生清單,參考原生元件 Alpha.dll 及獨立的 COM 元件 Bravo.dll。

此範例產生 Test.exe.manifest,使應用程式 XCOPY 可部署並利用免註冊 COM。

注意

在下方的範例中,所有應用程式二進位檔都是預先建置的,以專注於 manifest 產生的面向。 此範例產生一個完整運作的 ClickOnce 部署。

<Project DefaultTargets="Build">

    <ItemGroup>
        <File Include="Test.exe" />
        <Dependency Include="Alpha.dll">
            <AssemblyType>Native</AssemblyType>
            <DependencyType>Install</DependencyType>
        </Dependency>
        <ComComponent Include="Bravo.dll" />
    </ItemGroup>

    <Target Name="Build">
        <GenerateApplicationManifest
            AssemblyName="Test.exe"
            AssemblyVersion="1.0.0.0"
            Dependencies="@(Dependency)"
            Files="@(File)"
            IsolatedComReferences="@(ComComponent)"
            ManifestType="Native">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

    </Target>
</Project>

參見