다음을 통해 공유


iOS, Mac Catalyst, macOS 및 tvOS용 빌드 항목

빌드 항목은 iOS용 .NET, Mac Catalyst, macOS 및 tvOS 애플리케이션 또는 라이브러리 프로젝트를 빌드하는 방법을 제어합니다.

추가 앱 확장 프로그램

앱 번들에 복사할 추가 앱 확장이 포함된 항목 그룹입니다.

다음 메타데이터를 설정할 수 있습니다.

  • 포함: Xcode 앱 확장 프로젝트의 빌드 디렉터리에 대한 경로입니다.
  • 이름: 확장의 이름입니다.
  • BuildOutput: 이 값은 appex 번들의 위치를 결정하기 위해 Include 값에 추가됩니다. 일반적으로 Xcode는 시뮬레이터 및 디바이스 빌드를 서로 다른 위치에 배치하므로 시뮬레이터 또는 디바이스에 대한 빌드 여부에 따라 두 개의 서로 다른 appex 번들을 가리키는 단일 AdditionalAppExtensions 항목을 갖는 데 사용할 수 있습니다.
  • 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 (iOS, macOS 및 Mac Catalyst의 경우) 또는 .appiconset (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 어셈블리 참조 목록입니다(바인딩 생성기).

일반적으로 참조는 ProjectReference 또는 PackageReference 항목으로 자동으로 추가되어 처리됩니다.

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

참고 항목:

CoreMLModel

CoreML 모델을 포함하는 항목 그룹입니다.

사용자 정의 권한

앱에 추가할 사용자 지정 자격이 포함된 항목 그룹입니다.

이러한 자격은 마지막으로 처리되며 CodesignEntitlements 속성으로 지정된 파일 또는 사용 중인 프로비저닝 프로필(있는 경우)에서 다른 모든 자격을 재정의합니다.

형식은 다음과 같습니다.

<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>

ITunesArtwork

IPA용 iTunes 아트워크가 포함된 항목 그룹입니다.

iOS 및 tvOS 프로젝트에만 적용됩니다.

아이튠즈 메타데이터

iOS 및 tvOS 프로젝트에만 적용됩니다.

ImageAsset

이미지 자산을 포함하는 항목 그룹입니다.

인터페이스 정의

인터페이스 정의(*.xib 또는 *.storyboard 파일)가 포함된 항목 그룹입니다.

링크 설명

트리머에 전달할 추가 xml 파일입니다.

이는 TrimmerRootDescriptor 설정과 동일합니다.

금속

금속 자산이 포함된 항목 그룹입니다.

Mlaunch 추가 인수

디바이스 및 시뮬레이터에서 앱을 시작하는 데 사용되는 도구에 대한 추가 인수 mlaunch 를 포함하는 항목 그룹입니다. 이 mlaunch 도구는 내부 도구로 간주되며 동작은 언제든지 변경될 수 있습니다.

비고

이는 명령줄(dotnet run 또는 dotnet build -t:Run)에서 앱을 시작할 때만 적용되며, IDE에서 시작할 때는 해당되지 않습니다.

MlaunchEnvironmentVariables

디바이스 또는 시뮬레이터에서 앱을 시작할 때 설정될 환경 변수를 포함하는 항목 그룹입니다.

비고

이는 명령줄(dotnet run 또는 dotnet build -t:Run)에서 앱을 시작할 때만 적용되며, IDE에서 시작할 때는 해당되지 않습니다.

NativeReference

네이티브 실행 파일을 빌드할 때 반드시 연결되어야 하는 네이티브 참조를 포함하는 항목 그룹입니다.

ObjcBindingApiDefinition

바인딩 프로젝트에 대한 모든 API 정의를 나열하는 항목 그룹입니다.

ObjcBindingCoreSource

바인딩 프로젝트에 대한 모든 핵심 소스 코드를 나열하는 항목 그룹입니다.

ObjCBindingNativeFramework

바인딩 프로젝트에 포함해야 하는 모든 네이티브 프레임워크를 나열하는 항목 그룹입니다.

이 항목 그룹은 더 이상 사용되지 않으며 NativeReference 를 대신 사용합니다.

ObjcBindingNativeLibrary

바인딩 프로젝트에 포함해야 하는 모든 네이티브 라이브러리를 나열하는 항목 그룹입니다.

이 항목 그룹은 더 이상 사용되지 않으며 NativeReference 를 대신 사용합니다.

PartialAppManifest

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>

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에서 도입되었습니다.