共用方式為


建置 iOS、Mac Catalyst、macOS 和 tvOS 的項目

建置項目控制 .NET for iOS、Mac Catalyst、macOS 和 tvOS 應用程式或程式庫專案的建置方式。

附加應用程式擴充功能

項目群組,其中包含要複製到應用程式包中的任何其他應用程式擴充套件。

您可以設定下欄元資料:

  • 包含:Xcode 應用程式延伸模組專案的建置目錄路徑。
  • 名稱:延伸模組的名稱。
  • BuildOutput:此值會附加至 Include 值,以產生 appex 套件組合的位置。 Xcode 通常會將模擬器和裝置的建置放在不同的位置,因此,可以根據模擬器或裝置的建置,使用單一 AdditionalAppExtensions 進入點指向兩個不同的 appex 擴充套件。
  • CodesignEntitlements:指定簽署應用程式延伸模組時要使用的權限。 默認值為 'Include' 組建目錄中的 '%(Name.entitlements'(如果此檔案存在)。
  • CodesignWarnIfNoEntitlements: 如果未在 CodesignEntitlements 設定任何值,會顯示警告。 這個屬性可以設定為 false ,讓這個警告無聲。

例:

<ItemGroup>
    <AdditionalAppExtensions Include="path/to/my.appex">
        <Name>MyAppExtensionName</Name>
        <BuildOutput Condition="'$(SdkIsSimulator)' == 'false'">DerivedData/MyAppExtensionName/Build/Products/Debug-iphoneos</BuildOutput>
        <BuildOutput Condition="'$(SdkIsSimulator)' == 'true'">DerivedData/MyAppExtensionName/Build/Products/Debug-iphonesimulator</BuildOutput>
        <CodesignEntitlements>path/to/Entitlements-appextension.plist</CodesignEntitlements>
        <CodesignWarnIfNoEntitlements>false</CodesignWarnIfNoEntitlements>
    </AdditionalAppExtensions>
</ItemGroup>

您可以在這裡找到範例解決方案: TestApplication

替換應用程式圖示

AlternateAppIcon 專案群組可用來指定替代應用程式圖示。

Include 元數據必須指向資產目錄內 .appiconset 的檔名(適用於 iOS、macOS 和 Mac Catalyst),或 .imagestack(適用於 tvOS) 影像資源。

例:

<ItemGroup>
    <!-- The value to put in here for the "Resources/MyImages.xcassets/MyAlternateAppIcon.appiconset" resource would be "MyAlternateAppIcon" -->
    <AlternateAppIcon Include="MyAlternateAppIcon" />
</ItemGroup>

另請參閱:

AtlasTexture

包含圖集紋理的項目群組。

BGenReferencePath

要提供給 bgen 工具(系結產生器)的組件參考清單。

通常,這會自動處理,方法是將參考項新增為 ProjectReferencePackageReference 項目。

BundleResource

要複製到應用程式包的檔案。

另請參閱:

CodesignBundle

最終應用程式內需要簽署的其他套件組合。

其目的是在應用程式簽署過程中,納入任何透過手動方法(例如透過建置期間的自訂 MSBuild 目標)複製到應用程式包中的其他套件。

要包含的路徑是應用程式套件組合的路徑,以在主要應用程式套件組合內登入,包括應用程式套件組合名稱本身。

例:

<ItemGroup>
    <CodesignBundle Include="$(AssemblyName).app/Contents/SharedSupport/MyCustomBundle.app" />
</ItemGroup>

您可以在 CodesignBundle 項目上設定數個元數據,以指示簽署的發生方式:

例:

<ItemGroup>
    <CodesignBundle Include="$(AssemblyName).app/Contents/SharedSupport/MyCustomBundle.app">
        <CodesignEntitlements>path/to/Entitlements.plist</CodesignEntitlements>
    </CodesignBundle>
</ItemGroup>

未設定的任何元數據都會改用對應的屬性(例如,如果未設定 CodesignSigningKey 元數據,則會改用 CodesignSigningKey 屬性的值。

Collada

包含 Collada 資產的項目群組。

內容

要複製到應用程式套件組合的資源(檔案)。

它們會放在應用程式套件組合內的下列目錄中:

  • /Resources:iOS 和 tvOS
  • /Contents/Resources:macOS 和 Mac Catalyst

可以將 Link 元數據設定為相對於目標目錄的路徑,以變更應用程式套件組合中的位置。

例:

<ItemGroup>
    <Content Include="Readme.txt" Link="Documentation/Readme.txt" />
</ItemGroup>

會將檔案放在下列位置:

  • /Resources/Documentation/Readme.txt:iOS、tvOS
  • /Contents/Resources/Documentation/Readme.txt:macOS、Mac Catalyst

另請參閱:

CoreML模型

包含 CoreML 模型的項目群組。

自定義權利

包含要新增至應用的自訂權限的項目群組。

這些授權會最後處理,並且會覆寫任何其他授權,不論是從以 CodeignEntitlements 屬性指定的檔案,或是使用中的布建配置檔(如果有的話)。

這是格式:

<ItemGroup>
    <CustomEntitlements Include="name.of.entitlement" Type="Boolean" Value="true" /> <!-- value can be 'false' too (case doesn't matter) -->
    <CustomEntitlements Include="name.of.entitlement" Type="String" Value="stringvalue" />
    <CustomEntitlements Include="name.of.entitlement" Type="StringArray" Value="a;b" /> <!-- array of strings, separated by semicolon -->
    <CustomEntitlements Include="name.of.entitlement" Type="StringArray" Value="a😁b" ArraySeparator="😁" /> <!-- array of strings, separated by 😁 -->
    <CustomEntitlements Include="name.of.entitlement" Type="Remove" /> <!-- This will remove the corresponding entitlement  -->
</ItemGroup>

iTunes插圖

包含 iTunes IPA 圖稿的項目群組。

僅適用於 iOS 和 tvOS 專案。

ITunesMetadata

僅適用於 iOS 和 tvOS 專案。

ImageAsset

包含影像資產的項目群組。

介面定義

包含介面定義的項目群組(*.xib 或 *.storyboard 檔案)。

連結說明

要傳遞給修剪器的其他 XML 檔案。

這與設定 TrimmerRootDescriptor 相同。

Linker引數

編譯應用程式或應用程式延伸模組的主要可執行檔時,要傳遞給原生連結器 (ld) 的其他引數。

範例 1 (與架構連結 AudioToolbox ):

<ItemGroup>
    <LinkerArgument Include="-framework" />
    <LinkerArgument Include="AudioToolbox" />
</ItemGroup>

範例 2 (與自訂靜態程式庫連結):

<ItemGroup>
    <LinkerArgument Include="$(MSBuildProjectDirectory)/libCustom.a" />
</ItemGroup>

連結器的每個引數都是個別 LinkerArgument,且引數不得使用引號。

所有引數都會依新增至專案群組的 LinkerArgument 順序傳遞至原生連結器,但不會定義傳遞至原生連結器之所有引數內的確切位置。

如果組建之間的一組 LinkerArgument 變更會自動重建原生可執行檔,但如果 a LinkerArgument 指向檔案 (例如靜態程式庫) ,且該檔案變更,則不會偵測到此變更,也不會自動重建原生可執行檔。

金屬

包含金屬資產的項目組。

Mlaunch 附加參數

包含工具的額外參數的項目組,用於在裝置和模擬器中啟動應用程式。 此工具 mlaunch 被視為內部工具,而且行為隨時可能會變更。

備註

這僅適用於從命令行(dotnet rundotnet build -t:Run)啟動應用程式,不適用於從 IDE 啟動。

MlaunchEnvironmentVariables

專案群組,其中包含將在裝置或模擬器上啟動應用程式時設定的環境變數。

備註

這僅適用於從命令行(dotnet rundotnet build -t:Run)啟動應用程式,不適用於從 IDE 啟動。

NativeReference

專案項目群組,其中包含在建置原生可執行檔時應該鏈接或使用的任何原生參考。

ObjcBindingApi定義

列出所有 API 定義的項目群組,用於系結專案。

ObjcBindingCoreSource

列出所有用于系結專案的核心原始程式碼的項目群組。

ObjCBindingNativeFramework

列出需要包含在接合專案中的所有原生框架的項目群組。

此專案群組已被取代,請改用 NativeReference

ObjcBindingNativeLibrary

列出應包含於系結專案中的所有原生程式庫的項目組。

此專案群組已被取代,請改用 NativeReference

部分AppManifest

PartialAppManifest 可用來新增將與主要應用程式指令清單合併的其他部分應用程式指令清單(Info.plist)。

部分應用程式指令清單中的任何值都會覆寫主要應用程式指令清單中的值,除非 Overwrite 元數據設定為 false

如果在多個部分應用程式指令清單中指定了相同的值,則不確定哪一個值會使用。

<ItemGroup>
    <PartialAppManifest Include="my-partial-manifest.plist" Overwrite="false" />
</ItemGroup>

如果開發人員需要執行一個目標以計算要新增至 PartialAppManifest 專案群組的項目,可以將該目標新增至 PartialAppManifest 屬性,以確保它在 CollectAppManifestsDependsOn 項目被處理之前執行。

<PropertyGroup>
    <CollectAppManifestsDependsOn>
        AddPartialAppManifests;
        $(CollectAppManifestsDependsOn);
    </CollectAppManifestsDependsOn>
</PropertyGroup>
<Target Name="AddPartialAppManifests">
    <ItemGroup>
        <PartialAppManifest Include="MyPartialAppManifest.plist" />
    </ItemGroup>
</Target>

略過共同設計項目

指定 App Bundle 中不應簽署的檔案或目錄的項目群組。

目的是排除那些已經手動複製(例如通過專案檔中的自訂 MSBuild 目標)到應用程式包的檔案和目錄,且這些檔案和目錄已經簽署。

要包含的路徑是檔案或目錄相對於應用程式套件根目錄的路徑。

例:

<ItemGroup>
    <SkipCodesignItems Include="Contents/SharedSupport/mysignedlibrary.dylib" />
</ItemGroup>

適用於所有平台。

XcodeProject

<XcodeProject> 可用來建置和使用 Xcode 或 elsewehere 中建立的 Xcode 架構項目的輸出。

Include 元數據應該指向要建置的 XCODEPROJ 檔案路徑。

<ItemGroup>
  <XcodeProject Include="path/to/MyProject.xcodeproj" SchemeName="MyLibrary" />
</ItemGroup>

支援下列 MSBuild 元資料:

  • %(SchemeName):應該用來建置專案的建置配置或目標名稱。

  • %(Configuration):用來建置專案的組態名稱。 預設值為 Release

  • %(CreateNativeReference):輸出 XCFRAMEWORK 檔案將會新增為專案 @(NativeReference)。 如 @(NativeReference)%(Kind)%(Frameworks)%(SmartLink) 支援的元數據,將會在設定時轉送。 預設值為 true

  • %(OutputPath)可設為覆寫 Xcode 專案的 XCARCHIVE 和 XCFRAMEWORK 輸出路徑。 預設值為 $(IntermediateOutputPath)xcode/{SchemeName}-{Hash}

此建置動作是在 .NET 9 中引進的。