Udostępnij przez


Właściwości kompilacji dla systemów iOS, Mac Catalyst, macOS i tvOS

Właściwości programu MSBuild kontrolują zachowanie obiektów docelowych. Są one określone w pliku projektu, na przykład MyApp.csproj, w grupie właściwości MSBuild.

AltoolPath

Pełna ścieżka do altool narzędzia.

Domyślnym zachowaniem jest użycie elementu xcrun altool.

AppBundleResourcePrefix

Katalog, w którym są przechowywane zasoby (ten prefiks zostanie usunięty podczas kopiowania zasobów do pakietu aplikacji).

Jeśli ta właściwość nie zostanie jawnie ustawiona, odziedziczy jej wartość z właściwości prefiksu zasobu specyficznego dla platformy (IPhoneResourcePrefix, MonoMacResourcePrefix lub XamMacResourcePrefix w zależności od platformy).

Ustawienie domyślne: "Zasoby"

AppBundleDir

Lokalizacja utworzonego pakietu aplikacji.

AppBundleExtraOptions

Zaawansowane dodatkowe argumenty tworzenia pakietu aplikacji.

Prawidłowy zestaw argumentów zależy od platformy.

Zazwyczaj nie należy ich używać, chyba że zostanie to określone przez inżyniera firmy Microsoft.

Ikona aplikacji

Grupę AppIcon elementów można użyć do określenia ikony aplikacji dla aplikacji.

Wartość właściwości musi wskazywać nazwę pliku obrazu .appiconset (dla systemów iOS, macOS i Mac Catalyst) lub .brandassets (dla systemu tvOS), który znajduje się wewnątrz katalogu zasobów.

Przykład:

<PropertyGroup>
    <!-- The value to put in here for the "Resources/MyImages.xcassets/MyAppIcon.appiconset" resource would be "MyAppIcon" -->
    <AppIcon>MyAppIcon</AppIcon>
</PropertyGroup>

Zobacz również:

WersjaWyświetlanaAplikacji

Określa wartość CFBundleShortVersionString w manifeście aplikacji (Info.plist), jeśli zostanie ustawiona.

Jest to właściwość obsługującą program .NET "Single Project".

Aby uzyskać więcej informacji, zobacz OneDotNetSingleProject .

Identyfikator aplikacji

Określa wartość CFBundleIdentifier w manifeście aplikacji (Info.plist), jeśli zostanie ustawiona.

Jest to właściwość obsługującą program .NET "Single Project".

Aby uzyskać więcej informacji, zobacz OneDotNetSingleProject .

NazwaAplikacji

Jeśli jest ustawione, określa element CFBundleDisplayName w manifeście aplikacji (Info.plist).

Jest to właściwość obsługującą program .NET "Single Project".

Aby uzyskać więcej informacji, zobacz OneDotNetSingleProject .

WersjaAplikacji

Jeśli jest ustawione, określa element CFBundleVersion w manifeście aplikacji (Info.plist).

Jest to właściwość obsługującą program .NET "Single Project".

Aby uzyskać więcej informacji, zobacz OneDotNetSingleProject .

ArchiveBasePath

Lokalizacja, w której archiwa są przechowywane w systemie Windows na potrzeby kompilacji zdalnej.

Wartość domyślna to: %LocalAppData%\Xamarin\iOS\Archives

Dotyczy tylko projektów systemu iOS (ponieważ tylko projekty systemu iOS można tworzyć zdalnie z systemu Windows).

ArchiveOnBuild

Jeśli archiwum Xcode powinno zostać utworzone na końcu kompilacji.

BGenEmitDebugInformation

bgen Czy narzędzie (generator powiązań) powinno emitować informacje debugowania, czy nie.

Domyślne działanie to true, gdy właściwość Debug jest ustawiona na true.

BGenExtraArgs

Dodatkowe argumenty dla narzędzia bgen (generatora powiązań).

BGenToolExe

Nazwa bgen pliku wykonywalnego (narzędzie używane przez projekty powiązań do tworzenia powiązań).

Domyślnym zachowaniem jest użycie narzędzia bgen, które jest dostarczane wraz z naszym obciążeniem.

BGenToolPath

Katalog, w którym bgen znajduje się obiekt (BGenToolExe).

Domyślnym zachowaniem jest użycie narzędzia bgen, które jest dostarczane wraz z naszym obciążeniem.

BuildIpa

Jeśli pakiet (.ipa) powinien zostać utworzony dla pakietu aplikacji pod koniec kompilacji.

Dotyczy tylko projektów systemów iOS i tvOS.

Zobacz CreatePackage dla projektów macOS i Mac Catalyst.

BundleCreateDump

CoreCLR ma narzędzie wiersza polecenia nazywane createdump do tworzenia zrzutów pamięci, jeśli proces ulegnie awarii. System macOS automatycznie utworzy raporty o awarii dla wszystkich aplikacji ze sklepu App Store i udostępni je deweloperowi aplikacji, dzięki czemu createdump narzędzie nie jest przydatne w przypadku wielu aplikacji systemu macOS, a w związku z tym nie jest domyślnie uwzględniane w aplikacjach.

Można to zastąpić, ustawiając BundleCreateDump właściwość:

<PropertyGroup>
  <BundleCreateDump>true</BundleCreateDump>
</PropertyGroup>

Uwaga: narzędzie createdump obecnie nie działa w przypadku aplikacji sandboxed (#18961);

Dotyczy tylko projektów korzystających ze środowiska uruchomieniowego CoreCLR (które w momencie pisania tego tekstu dotyczy tylko projektów systemu macOS).

PakietOryginalnychZasobów

Ta właściwość określa, czy zasoby są kompilowane przed osadzeniem w projektach bibliotek, czy też osadzana jest oryginalna (nieskompilowana) wersja.

W przeszłości zasoby były kompilowane przed osadzeniem ich w projektach bibliotecznych, ale wymaga to posiadania dostępu do środowiska Xcode, co ma kilka wad:

  • Spowalnia zdalne kompilacje w systemie Windows.
  • Nie będzie działać podczas lokalnego kompilowania w systemie Windows ani na żadnej innej platformie z wyjątkiem systemu macOS.
  • Zasoby są kompilowane przy użyciu bieżącego dostępnego środowiska Xcode, które mogą nie mieć takich samych funkcji, jak potencjalnie nowszy kod Xcode dostępny po wykorzystaniu danej biblioteki.
  • Nie można mieć całościowego wglądu w zasoby podczas budowania aplikacji, co jest niezbędne do wykrywania konfliktujących zasobów.

W związku z tym dodaliśmy obsługę osadzania oryginalnych zasobów w bibliotekach. Opcja rejestracji będzie dostępna w .NET 9, ale będzie można ją wyłączyć, zaczynając od .NET 10.

Wartość domyślna tej właściwości false na platformie .NET 9 i true na platformie .NET 10+.

Uwaga / Notatka

Zgłoś problem, jeśli okaże się, że musisz wyłączyć tę funkcję, ponieważ jest możliwe, że opcja jej wyłączenia zostanie usunięta w przyszłości.

CodesignAllocate

Ścieżka do codesign_allocate narzędzia.

Domyślnie ta wartość jest wykrywana automatycznie.

CodesignConfigureDependsOn

Jest to punkt rozszerzenia kompilacji: deweloper może dodać dowolne obiekty docelowe do tej właściwości, aby wykonać te obiekty docelowe, zanim kompilacja przyjrzy się dowolnym właściwościom współprojektowania.

Można to na przykład użyć do wyłączenia podpisywania kodu dla kompilacji symulatora:

<PropertyGroup>
  <CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);DisableCodesignInSimulator</CodesignConfigureDependsOn>
</PropertyGroup>
<Target Name="DisableCodesignInSimulator" Condition="'$(SdkIsSimulator)' == 'true'">
  <PropertyGroup>
    <EnableCodeSigning>false</EnableCodeSigning>
  </PropertyGroup>
</Target>

CodesignDependsOn

Jest to punkt rozszerzenia dla kompilacji: deweloper może dodać dowolne cele do tej właściwości, aby wykonać te cele przed podpisaniem pakietu aplikacji.

Przykład:

<PropertyGroup>
  <CodesignDependsOn>$(CodesignDependsOn);DoThisBeforeCodesign</CodesignDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCodesign">
  <Exec Command="echo This is executed right before the app is signed." />
</Target>

CodesignEntitlements

Ścieżka do pliku uprawnień, który określa uprawnienia wymagane przez aplikację.

Zwykle „Entitlements.plist”.

Ustawimy to automatycznie na "Entitlements.plist", jeśli taki plik istnieje w katalogu głównym projektu.

Można temu zapobiec, ustawiając właściwość EnableDefaultCodesignEntitlements na false.

CodesignExtraArgs

Dodatkowe argumenty przekazywane do narzędzia 'codesign' podczas podpisywania pakietu aplikacyjnego.

CodesignKey

Określa klucz podpisywania kodu do użycia podczas podpisywania pakietu aplikacji.

CodesignKeychain

Pęk kluczy do użycia podczas podpisywania kodu.

KluczDoPodpisywaniaKodu

Określa klucz podpisywania kodu do użycia podczas podpisywania pakietu aplikacji.

Dotyczy tylko aplikacji macOS i Mac Catalyst, ale zaleca się użycie właściwości CodesignKey (która działa na wszystkich platformach).

CodesignProvision

Określa profil aprowizacji, który ma być używany podczas podpisywania pakietu aplikacji.

CodesignResourceRules

Ścieżka do pliku ResourceRules.plist do skopiowania do pakietu aplikacji.

CodesignRequireProvisioningProfile

Określa, czy wymagany jest profil konfiguracyjny podczas podpisywania pakietu aplikacji.

Domyślnie wymagany jest profil aprowizacji, jeśli:

  • macOS, Mac Catalyst: określono profil aprowizacji (z właściwością CodesignProvision ).
  • iOS, tvOS: kompilacja dla urządzenia lub określenie pliku uprawnień (z właściwością CodesignEntitlements).

Ustawienie tej właściwości na true lub false spowoduje zastąpienie logiki domyślnej.

PakietZasobówDoKompresjiBinding

Odwołania natywne w projektach powiązań są kopiowane do katalogu wyjściowego w trakcie procesu kompilacji, wraz z zestawem powiązań, do czegoś, co nazywamy "pakietem zasobów powiązań".

Te odwołania natywne mogą być przechowywane skompresowane wewnątrz pliku zip o nazwie $(AssemblyName).resources.zip, albo jako-w-iste, wewnątrz katalogu o nazwie $(AssemblyName).resources.

Właściwość CompressBindingResourcePackage określa, czy utworzyć plik zip, czy katalog.

Możliwe wartości to:

  • auto: automatycznie decyduje o najlepszej opcji (obecnie zawsze tworzony jest plik zip, ale gdy program Visual Studio zacznie obsługiwać długie ścieżki w systemie Windows, może to zostać zmienione na pakiety zasobów powiązane zip z dowiązaniami symbolicznymi).
  • true: tworzenie pliku zip
  • false: tworzenie katalogu

Wartość domyślna to auto.

Dotyczy to również sposobu przechowywania odwołań natywnych wewnątrz pakietów NuGet.

Uwaga / Notatka

W niektórych przypadkach korzystne może być wymuszenie użycia pliku zip również w systemie iOS, zwłaszcza gdy istnieje framework z plikami o długich nazwach, ponieważ plik zip może czasami obejść problemy z MAX_PATH w systemie Windows.

CreateAppBundleDependsOn

Jest to punkt rozszerzenia kompilacji: deweloper może dodać dowolne elementy docelowe do tej właściwości, aby wykonać te obiekty docelowe podczas tworzenia pakietu aplikacji.

Przykład:

<PropertyGroup>
  <CreateAppBundleDependsOn>$(CreateAppBundleDependsOn);DoThisBeforeCreatingAppBundle</CreateAppBundleDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingAppBundle">
  <Exec Command="echo This is executed before the app bundle is created." />
</Target>

CreateIpaDependsOn

Jest to punkt rozszerzenia kompilacji: deweloper może dodać dowolne obiekty docelowe do tej właściwości, aby wykonać te obiekty docelowe podczas tworzenia usługi IPA.

Dotyczy wszystkich platform, które tworzą archiwa IPA (obecnie systemy iOS i tvOS).

Przykład:

<PropertyGroup>
  <CreateIpaDependsOn>$(CreateIpaDependsOn);DoThisBeforeCreatingIPA</CreateIpaDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingIPA">
  <Exec Command="echo This is executed before the IPA is created." />
</Target>

UtwórzPakiet

Jeśli pakiet (.pkg) powinien zostać utworzony dla pakietu aplikacji na końcu kompilacji.

Dotyczy tylko projektów macOS i Mac Catalyst.

Zobacz BuildIpa for iOS and tvOS projects ( Kompilowanie projektów systemu iOS i tvOS).

DeviceSpecificBuild

Jeśli kompilacja powinna być specyficzna dla wybranego urządzenia.

Dotyczy wszystkich platform obsługujących kompilacje specyficzne dla urządzenia (obecnie systemy iOS i tvOS).

DeviceSpecificIntermediateOutputPath

Ścieżka wyjściowa pośrednia do użycia, gdy są włączone kompilacje specyficzne dla urządzenia.

Dotyczy wszystkich platform obsługujących kompilacje specyficzne dla urządzenia (obecnie systemy iOS i tvOS).

DeviceSpecificOutputPath

Ścieżka wyjściowa używana w przypadku, gdy włączone są kompilacje specyficzne dla urządzenia.

Dotyczy wszystkich platform obsługujących kompilacje specyficzne dla urządzenia (obecnie systemy iOS i tvOS).

Adres diagnostyczny

Adres IP, na którym dotnet-dsrouter jest wykonywane. Jest to typowo 127.0.0.1 podczas profilowania w symulatorze, a także adres IP komputera, gdzie dotnet-dsrouter podczas profilowania na urządzeniu.

Jest to element adresu IP DiagnosticConfiguration.

Niejawnie ustawia wartość EnableDiagnostics na true.

Wartość domyślna to 127.0.0.1.

Konfiguracja diagnostyczna

Wartość podana przez dotnet-dsrouter dla DOTNET_DiagnosticPorts, taka jak:

  • 127.0.0.1:9000,suspend,connect
  • 127.0.0.1:9000,nosuspend,connect

Należy pamiętać, że znak , musi zostać zescapowany za pomocą %2c, jeśli zostanie przekazany w wierszu polecenia do dotnet build:

dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect

Spowoduje to automatyczne ustawienie zmiennej DOTNET_DiagnosticPorts środowiskowej spakowanej wewnątrz aplikacji, tak aby zmienna środowiskowa została ustawiona podczas uruchamiania aplikacji.

Niejawnie ustawia wartość EnableDiagnostics na true.

Domyślne zachowanie polega na obliczaniu tej wartości z innych właściwości diagnostycznych (DiagnosticAddress, DiagnosticPort, DiagnosticListenMode i DiagnosticSuspend).

W przypadku ustawienia dowolny z innych właściwości diagnostycznych zostanie zignorowany.

DiagnosticListenMode

Wartość podana przez dotnet-dsrouter, taka jak connect lub listen, w elemencie trybu nasłuchiwania składnika DiagnosticConfiguration.

Niejawnie ustawia wartość EnableDiagnostics na true.

Wartość domyślna to listen.

DiagnosticPort

Wartość dostarczona przez dotnet-dsrouter, taka jak 9000, składnik portu DiagnosticConfiguration.

Niejawnie ustawia wartość EnableDiagnostics na true.

Wartość domyślna to 9000.

DiagnosticSuspend

Wartość określająca zachowanie uruchamiania podczas profilowania aplikacji.

Ustaw opcję na true wstrzymanie aplikacji podczas uruchamiania (oczekiwanie na nawiązanie połączenia z aplikacją przez serwer diagnostyczny) lub false uruchomienie aplikacji w zwykły sposób (i połączenie serwera diagnostycznego z aplikacją później).

suspend/nosuspend To odpowiada wartości w DiagnosticConfiguration".

Niejawnie ustawia wartość EnableDiagnostics na true.

Wartość domyślna to false.

DittoPath

Pełna ścieżka do ditto pliku wykonywalnego.

Domyślnym zachowaniem jest użycie elementu /usr/bin/ditto.

EmbedOnDemandResources

Jeśli zasoby na żądanie powinny być osadzone w pakiecie aplikacji.

Domyślnie: prawda.

WłączPodpisywanieKodów

Jeśli podpisywanie kodu jest włączone.

Podpisywanie kodu jest domyślnie włączone dla wszystkich platform; Można to zastąpić tą właściwością.

EnableDefaultCodesignEntitlements (Włącz domyślne uprawnienia do podpisywania kodu)

Zobacz CodesignEntitlements.

Włącz zasoby na żądanie

Jeśli zasoby na żądanie są włączone.

Ustawienie domyślne: wartość false dla systemu macOS, prawda dla wszystkich innych platform.

WłączPodpisywaniePakietu

Jeśli .pkg, który został utworzony (jeśli CreatePackage został włączony), powinien zostać podpisany.

Dotyczy tylko systemów macOS i Mac Catalyst.

WłączDiagnostykę

Włącz składniki wymagane do działania diagnostyki (na przykład profilowanie).

Jest domyślnie włączona dla kompilacji debug (gdy jest włączona funkcja MtouchDebug lub MmpDebug), ale należy ją ręcznie włączyć przed profilowaniem kompilacji wersji produkcyjnej.

<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>

Spowoduje to nieznaczne zwiększenie rozmiaru aplikacji.

Ma zastosowanie tylko w przypadku korzystania ze środowiska uruchomieniowego Mono (CoreCLR zawsze obsługuje diagnostykę, podczas gdy nativeAOT nigdy nie działa).

EnableSGenConc

Włącza tryb współbieżny dla garbage collectora SGen.

Dotyczy tylko systemów iOS, tvOS i Mac Catalyst (w przypadku braku użycia funkcji NativeAOT).

EventSourceSupport

Gdy ustawiona jest wartość false, wyłącza obsługę EventSource platformy .NET z aplikacji z ograniczoną zawartością. Wyłączenie tej funkcji uniemożliwiłoby działanie narzędzi diagnostycznych platformy .NET, takich jak dotnet-counters, co jednak zmniejsza rozmiar aplikacji.

Wartość domyślna: ustaw na false, gdy Optimize jest ustawione na true (co jest wartością domyślną dla kompilacji Release), chyba że $(EnableDiagnostics) jest włączone.

GenerowanieManifestuAplikacji

Jeśli manifest aplikacji (Info.plist) powinien zostać wygenerowany.

Domyślnie: prawda.

GeneratedSourcesDir

Miejsce, w którym zapisywane są wygenerowane źródła przez generator.

UwzględnijWszystkieIkonyAplikacji

Ustaw właściwość na true, IncludeAllAppIcons aby automatycznie uwzględniać wszystkie ikony aplikacji ze wszystkich katalogów zasobów w aplikacji.

Przykład:

<PropertyGroup>
    <IncludeAllAppIcons>true</IncludeAllAppIcons>
</PropertyGroup>

Zobacz również:

iOSMinimumVersion

Określa minimalną wersję systemu iOS, w ramach których aplikacja może działać.

Dotyczy systemu iOS; Ustawienie tej wartości spowoduje ustawienie SupportedOSPlatformVersion dla projektów systemu iOS (tylko).

IPhoneResourcePrefix

Katalog, w którym są przechowywane zasoby (ten prefiks zostanie usunięty podczas kopiowania zasobów do pakietu aplikacji).

Dotyczy projektów iOS, tvOS i Mac Catalyst.

Rozważ użycie ujednoliconej właściwości AppBundleResourcePrefix .

Zobacz także MonoMacResourcePrefix i XamMacResourcePrefix.

IpaIncludeArtwork

Jeśli grafika powinna zostać uwzględniona w IPA.

Dotyczy tylko projektów systemów iOS i tvOS.

IpaPackageName

Określa nazwę wynikowego pliku ipa (bez ścieżki) podczas tworzenia pakietu IPA (zobacz BuildIpa). Parametr IpaPackagePath zastąpi tę wartość.

Dotyczy tylko projektów systemów iOS i tvOS.

IpaPackageDir

Określa katalog wynikowego pliku ipa podczas tworzenia pakietu IPA (zobacz BuildIpa). Parametr IpaPackagePath zastąpi tę wartość.

Dotyczy tylko projektów systemów iOS i tvOS.

IpaPackagePath

Określa ścieżkę do wynikowego pliku ipa podczas tworzenia pakietu IPA (zobacz BuildIpa).

Dotyczy tylko projektów systemów iOS i tvOS.

IsAppExtension

Jeśli projekt jest rozszerzeniem aplikacji.

IsBindingProject

Jeśli projekt jest wiążącym projektem.

IsXPCService

Jeśli rozszerzenie systemu macOS jest usługą xpc.

Dotyczy tylko projektów systemu macOS.

Tryb Łączenia

Określa tryb łącza dla projektu (NoneSdkOnlylub Full).

Dotyczy projektów systemu macOS, ale ta właściwość jest przestarzała, zamiast tego użyj funkcji TrimMode .

Zobacz też MtouchLink.

LinkWithSwiftSystemLibraries

Jeśli ustawiono na true, kompilacja poinformuje natywnego konsolidatora, gdzie można znaleźć systemowe biblioteki Swift.

Jest to przydatne, gdy biblioteka natywna w jakiś sposób korzysta ze Swift, w takim przypadku natywny linker musi wiedzieć, gdzie znaleźć systemowe biblioteki Swift.

Obecnie oznacza to, że te argumenty zostaną przekazane do linkera systemowego.

  • -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/[platform]
  • -L/Applications/Xcode.app/Contents/Developer/Platforms/[platform].platform/Developer/SDKs/[platform].sdk/usr/lib/swift

Dokładny zestaw argumentów może ulec zmianie w przyszłości.

MacCatalystMinimumVersion

Określa minimalną wersję narzędzia Mac Catalyst (iOS), na których może działać aplikacja.

Dotyczy Mac Catalyst; ustawienie tej wartości spowoduje ustawienie SupportedOSPlatformVersion tylko dla projektów Mac Catalyst.

MaciOSPrepareForBuildDependsOn

Właściwość rozdzielana średnikami, która może służyć do rozszerzania procesu kompilacji. Obiekty docelowe programu MSBuild dodane do tej właściwości będą wykonywane na wczesnym etapie kompilacji zarówno dla typów projektów aplikacji, jak i biblioteki. Ta właściwość jest domyślnie pusta.

Przykład:

<PropertyGroup>
  <MaciOSPrepareForBuildDependsOn>$(MaciOSPrepareForBuildDependsOn);MyCustomTarget</MaciOSPrepareForBuildDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

Ta właściwość została wprowadzona na platformie .NET 9.

macOSMinimumVersion

Określa minimalną wersję systemu macOS, w ramach których aplikacja może działać.

Dotyczy systemu macOS; ustawienie tej wartości spowoduje ustawienie SupportedOSPlatformVersion dla projektów systemu macOS (tylko).

MacOSXSdkVersion

Wersja zestawu SDK systemu macOS do użycia na potrzeby kompilacji.

Ustawienie domyślne: automatycznie wykryte zgodnie z domyślną wersją dostarczoną z wybranym Xcode.

Zobacz również MtouchSdkVersion.

Tryb zarządzania wyjątkami Marshal

Wybierz sposób obsługi wyjątków zarządzanych podczas napotkania ramki natywnej podczas odwijania stosu podczas przetwarzania wyjątku zarządzanego.

Prawidłowe wartości:

  • default: Obecnie to jest throwobjectivecexception.
  • unwindnativecode: Nie jest to dostępne w przypadku korzystania ze środowiska uruchomieniowego CoreCLR.
  • throwobjectivecexception: Przechwyć wyjątek zarządzany i przekonwertuj go na wyjątek Objective-C.
  • abort: przerwać proces.
  • disable: Wyłącz przechwytywanie wyjątków zarządzanych. W przypadku MonoVM jest to odpowiednik unwindnativecode, dla CoreCLR jest to odpowiednik abort.

Aby uzyskać więcej informacji, zobacz Marshaling wyjątków i MarshalObjectiveCExceptionMode.

MarshalObjectiveCExceptionMode

Wybierz metodę obsługi wyjątków Objective-C, gdy napotkasz zarządzaną ramkę w trakcie odwijania stosu przy przetwarzaniu wyjątku Objective-C.

Prawidłowe wartości:

  • default: Obecnie to jest throwmanagedexception.
  • unwindmanagedcode: Nie jest to dostępne w przypadku korzystania ze środowiska uruchomieniowego CoreCLR.
  • throwmanagedexception: Przechwyć wyjątek Objective-C i przekonwertuj go na wyjątek zarządzany.
  • abort: przerwać proces.
  • disable: Wyłącz przechwytywanie wszystkich wyjątków typu Objective-C.

Aby uzyskać więcej informacji, zobacz Marshaling wyjątków i MarshalManagedExceptionMode.

MdimportPath

Pełna ścieżka do mdimport narzędzia.

Domyślnym zachowaniem jest użycie elementu xcrun mdimport.

MetalLibPath

Pełna ścieżka do metallib narzędzia (Metal Linker).

Domyślnym zachowaniem jest użycie elementu xcrun metallib.

MetalPath

Pełna ścieżka do kompilatora Metal.

Domyślnym zachowaniem jest użycie elementu xcrun metal.

MetricsSupport

Gdy ustawiona jest wartość false, wyłącza obsługę metryk platformy .NET w zredukowanych aplikacjach. Wyłączenie tej funkcji uniemożliwiłoby działanie takich interfejsów API, jak System.Diagnostics.Metrics, ale z korzyścią dla zmniejszenia rozmiaru aplikacji.

Domyślnie: ustaw false, gdy Optimize jest ustawione na true (co jest domyślną wartością dla kompilacji Release), chyba że $(EnableDiagnostics) jest włączone.

MmpDebug

Włącza tryb debugowania na potrzeby tworzenia pakietu aplikacji.

Dotyczy tylko projektów systemu macOS.

Zobacz również MtouchDebug.

Agresywne Przycinanie Atrybutów w Trybie Mobilnym

Ta właściwość określa, czy należy usunąć liczne atrybuty, które są niezwykle rzadko potrzebne w czasie wykonywania.

Ta opcja jest domyślnie włączona.

Należy pamiętać, że chociaż usunięte atrybuty są bardzo rzadko używane, jest technicznie możliwe, że usunięcie może zmienić zachowanie środowiska uruchomieniowego.

Na przykład system.Xml.Serialization zachowuje się inaczej, jeśli konstruktor ma [Obsolete] atrybut (który jest jednym z atrybutów, które są usuwane). Jest to wystarczająco niskie ryzyko, aby uzasadnić usunięcie tych atrybutów domyślnie z powodu oszczędności rozmiaru.

Lista usuniętych atrybutów może ulec zmianie w przyszłości, ale w momencie pisania tego tekstu (dla platformy .NET 10) są to atrybuty:

  • Microsoft.CodeAnalysis.EmbeddedAttribute
  • System.CLSCompliantAttribute
  • System.CodeDom.Compiler.GeneratedCodeAttribute
  • System.ComponentModel.EditorBrowsableAttribute
  • System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute
  • System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute
  • System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute
  • System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
  • System.Diagnostics.CodeAnalysis.ExperimentalAttribute
  • System.Diagnostics.CodeAnalysis.FeatureGuardAttribute
  • System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute
  • System.Diagnostics.CodeAnalysis.MemberNotNullAttribute
  • System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute
  • System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute
  • System.Diagnostics.CodeAnalysis.NotNullWhenAttribute
  • System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute
  • System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute
  • System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute
  • System.Diagnostics.CodeAnalysis.StringSyntaxAttribute
  • System.Diagnostics.CodeAnalysis.SuppressMessageAttribute
  • System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute
  • System.Diagnostics.CodeAnalysis.UnscopedRefAttribute
  • System.ObsoleteAttribute
  • System.Reflection.AssemblyCompanyAttribute
  • System.Reflection.AssemblyConfigurationAttribute
  • System.Reflection.AssemblyCopyrightAttribute
  • System.Reflection.AssemblyDefaultAliasAttribute
  • System.Reflection.AssemblyDescriptionAttribute
  • System.Reflection.AssemblyMetadataAttribute
  • System.Reflection.AssemblyProductAttribute
  • System.Reflection.AssemblyTitleAttribute
  • System.Runtime.CompilerServices.AsyncMethodBuilderAttribute
  • System.Runtime.CompilerServices.CallerArgumentExpressionAttribute
  • System.Runtime.CompilerServices.CallerFilePathAttribute
  • System.Runtime.CompilerServices.CallerLineNumberAttribute
  • System.Runtime.CompilerServices.CallerMemberNameAttribute
  • System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute
  • System.Runtime.CompilerServices.CompilerGlobalScopeAttribute
  • System.Runtime.CompilerServices.EnumeratorCancellationAttribute
  • System.Runtime.CompilerServices.ExtensionAttribute
  • System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute
  • System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute
  • System.Runtime.CompilerServices.IntrinsicAttribute
  • System.Runtime.CompilerServices.IsReadOnlyAttribute
  • System.Runtime.CompilerServices.IsUnmanagedAttribute
  • System.Runtime.CompilerServices.NativeIntegerAttribute
  • System.Runtime.CompilerServices.RefSafetyRulesAttribute
  • System.Runtime.CompilerServices.ScopedRefAttribute
  • System.Runtime.CompilerServices.SkipLocalsInitAttribute
  • System.Runtime.CompilerServices.TupleElementNamesAttribute
  • System.Runtime.InteropServices.LibraryImportAttribute
  • System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshallerAttribute
  • System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute
  • System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute
  • System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute
  • System.Runtime.Versioning.NonVersionableAttribute
  • System.Runtime.Versioning.ObsoletedOSPlatformAttribute
  • System.Runtime.Versioning.RequiresPreviewFeaturesAttribute
  • System.Runtime.Versioning.SupportedOSPlatformAttribute
  • System.Runtime.Versioning.SupportedOSPlatformGuardAttribute
  • System.Runtime.Versioning.TargetPlatformAttribute
  • System.Runtime.Versioning.UnsupportedOSPlatformAttribute
  • System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute

Ta właściwość została wprowadzona na platformie .NET 10.

MonoBundlingExtraArgs

Dodatkowe argumenty określające sposób tworzenia pakietu aplikacji.

Dotyczy tylko projektów systemu macOS.

Ta właściwość jest przestarzała, zamiast tego użyj polecenia AppBundleExtraOptions .

MonoMacResourcePrefix

Katalog, w którym są przechowywane zasoby (ten prefiks zostanie usunięty podczas kopiowania zasobów do pakietu aplikacji).

Dotyczy tylko projektów systemu macOS.

Rozważ użycie ujednoliconej właściwości AppBundleResourcePrefix .

Zobacz również IPhoneResourcePrefix i XamMacResourcePrefix.

MonoUseCompressedInterfaceBitmap

Dzięki temu środowisko uruchomieniowe Mono będzie używać skompresowanej wersji map bitowych interfejsu (mapy bitowe interfejsu są używane do określania, czy określone typy implementują dany interfejs).

Te mapy bitowe mogą używać znacznej ilości pamięci w czasie wykonywania, w szczególności w przypadku aplikacji, które mają znaczną ilość interfejsów.

To ustawienie jest domyślnie wyłączone, ale można je włączyć w ten sposób, co spowoduje zmniejszenie ilości pamięci używanej w czasie wykonywania:

<PropertyGroup>
    <MonoUseCompressedInterfaceBitmap>true</MonoUseCompressedInterfaceBitmap>
</PropertyGroup>

Wadą jest to, że kontrole typów (obj is SomeInterface) będą wolniejsze.

Ma zastosowanie tylko w przypadku korzystania ze środowiska uruchomieniowego Mono.

MtouchDebug

Włącza tryb debugowania na potrzeby tworzenia pakietu aplikacji.

Dotyczy projektów iOS, tvOS i Mac Catalyst.

Zobacz też MmpDebug.

MtouchEnableSGenConc

Włącza tryb współbieżny dla garbage collectora SGen.

Dotyczy tylko systemów iOS, tvOS i Mac Catalyst, gdy nie używasz funkcji NativeAOT.

Ta właściwość jest przestarzała, zamiast tego użyj polecenia EnableSGenConc .

MtouchExtraArgs

Dodatkowe argumenty określające sposób tworzenia pakietu aplikacji.

Dotyczy tylko projektów iOS, tvOS i Mac Catalyst.

Ta właściwość jest przestarzała, zamiast tego użyj polecenia AppBundleExtraOptions .

MtouchInterpreter

Włącza interpreter i opcjonalnie przyjmuje rozdzieloną przecinkami listę zestawów do interpretacji (jeśli cały prefiks jest poprzedzony znakiem minus, zestaw zostanie skompilowany w trybie AOT). Parametr "all" może służyć do określania wszystkich zestawów. Ten argument można określić wiele razy.

Przykład:

<PropertyGroup>
  <!-- interpret all assemblies -->
  <MtouchInterpreter>all</MtouchInterpreter>

  <!-- AOT-compile all assemblies, except System.dll, which will be interpreted. -->
  <MtouchInterpreter>System</MtouchInterpreter>

  <!-- interpret all assemblies, except System.Core.dll, which will be AOT-compiled. -->
  <MtouchInterpreter>all,-System.Core</MtouchInterpreter>
</PropertyGroup>

Skrót dla MtouchInterpreter to ustawienie UseInterpreter=true, co jest równoważne MtouchInterpreter=all.

Jeśli zarówno UseInterpreter jak i MtouchInterpreter są ustawione, wartość MtouchInterpreter ma pierwszeństwo.

Dotyczy aplikacji dla systemów iOS, tvOS i Mac Catalyst (kiedy nie używa się funkcji NativeAOT).

Domyślne zachowanie polega na tym, że interpreter nie jest włączony.

Uwaga / Notatka

Domyślne ustawienie dla konfiguracji UseInterpreter=true jest zmieniane przez program MAUI na "Debug".

Określa tryb linku dla projektu (None, SdkOnly, Full).

Dotyczy projektów z systemami iOS, tvOS i Mac Catalyst, ale ta właściwość jest przestarzała, zamiast tego należy użyć funkcji TrimMode .

Zobacz też LinkMode.

MtouchSdkVersion

Wersja zestawu SDK systemu iOS lub tvOS do użycia na potrzeby kompilacji.

Ustawienie domyślne: automatycznie wykryte zgodnie z domyślną wersją dostarczoną z wybranym Xcode.

Zobacz też MacOSXSdkVersion.

MtouchUseLlvm

Właściwość logiczna określająca, czy kompilacja AOT powinna być wykonywana przy użyciu LLVM.

Dotyczy projektów iOS, tvOS i Mac Catalyst.

Wartość domyślna:

  • W systemach iOS i tvOS: włączono obsługę kompilacji wydania (gdzie Configuration="Release").
  • Na Komputerze Mac Catalyst: nigdy nie jest domyślnie włączony.

NoBindingEmbedding

Właściwość logiczna określająca, czy biblioteki natywne w projektach wiążących powinny być osadzone w zarządzanym zestawie, czy umieszczone w katalogu obok zarządzanego zestawu.

Wartość domyślna to true (co oznacza, że biblioteki natywne nie zostaną osadzone w zestawie zarządzanym).

Uwaga / Notatka

Xcframeworks nie będą działać poprawnie, jeśli są osadzone wewnątrz zestawu zarządzanego (jeśli ta właściwość nie jest true).

NoDSymUtil

Właściwość logiczna określająca, czy należy wyłączyć generowanie plików .dSYM.

Wartość domyślna:

  • true dla systemów iOS i tvOS podczas kompilowania dla symulatora.
  • true dla systemów macOS i Mac Catalyst, chyba że tworzysz archiwum (ArchiveOnBuild=true)

Oznacza to, że archiwum .dSYM zostanie wygenerowane w następujących przypadkach (domyślnie):

  • W systemach iOS i tvOS podczas kompilowania dla urządzenia.
  • W systemach macOS i Mac Catalyst podczas tworzenia archiwum (ArchiveOnBuild=true).

NoSymbolStrip

Właściwość logiczna określająca, czy symbole debugowania są usuwane z aplikacji w czasie kompilacji.

Domyślne zachowanie polega na zachowaniu symboli debugowania dla:

  • Debug kompilacje dla platform stacjonarnych.
  • Wersje symulatora na urządzenia mobilne.

Przykład przechowywania symboli debugowania:

<PropertyGroup>
  <NoSymbolStrip>true</NoSymbolStrip>
</PropertyGroup>

OnDemandResourcesInitialInstallTags

Właściwość ciągu określająca początkowe tagi instalacji dla zasobów na żądanie.

OnDemandResourcesPrefetchOrder

Właściwość ciągu określająca kolejność wstępnego pobierania dla zasobów na żądanie.

URL zasobów na żądanie

Właściwość tekstowa określająca adres URL zasobu dla zasobów dostępnych na żądanie.

Optymalizuj PNG

Właściwość logiczna określająca, czy obrazy png powinny być zoptymalizowane.

OptymalizacjaObrazówPngZależyOd

Jest to punkt rozszerzenia kompilacji: deweloper może dodać dowolne obiekty docelowe do tej właściwości, aby wykonać te obiekty docelowe przed zoptymalizowaniem jakichkolwiek obrazów png.

Przykład:

<PropertyGroup>
  <OptimizePngImagesDependsOn>$(OptimizePngImagesDependsOn);MyCustomTarget</OptimizePngImagesDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

OptymalizujListyWłaściwości

Właściwość logiczna określająca, czy listy właściwości (plisty) powinny być zoptymalizowane.

OptimizePropertyListsZależyOd

Jest to punkt rozszerzenia kompilacji: deweloper może dodać dowolne obiekty docelowe do tej właściwości, aby wykonać te obiekty docelowe przed zoptymalizowaniem list właściwości (plists).

Przykład:

<PropertyGroup>
  <OptimizePropertyListsDependsOn>$(OptimizePropertyListsDependsOn);MyCustomTarget</OptimizePropertyListsDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

KluczPodpisuPakietu

Określa klucz podpisywania kodu, aby podpisać pakiet podczas tworzenia .pkg dla projektu macOS i Mac Catalyst.

Dotyczy tylko aplikacji macOS i Mac Catalyst.

PackagingExtraArgs

Określa wszelkie dodatkowe argumenty, które mają być przekazywane do narzędzia "productbuild" podczas tworzenia .pkg dla projektu macOS i Mac Catalyst.

Dotyczy tylko aplikacji macOS i Mac Catalyst.

PkgPackagePath

Określa ścieżkę do wynikowego pliku .pkg podczas tworzenia pakietu (zobacz CreatePackage).

Dotyczy tylko aplikacji macOS i Mac Catalyst.

PlutilPath

Pełna ścieżka do plutil narzędzia wiersza polecenia.

Domyślnym zachowaniem jest użycie elementu xcrun plutil.

PngCrushPath

Pełna ścieżka do pngcrush narzędzia wiersza polecenia.

Domyślnym zachowaniem jest użycie elementu xcrun pngcrush.

ProcessEnums

Właściwość logiczna określająca, czy wyliczenia powinny być przetwarzane jako definicja interfejsu API w projektach powiązań.

ProductBuildPath

Pełna ścieżka do productbuild narzędzia.

Domyślnym zachowaniem jest użycie elementu xcrun productbuild.

Definicja Produktu

Szablon definicji produktu (.plist) do użycia podczas tworzenia definicji produktu do przekazania do narzędzia kompilacji produktu podczas tworzenia pakietów (.pkg).

Dotyczy tylko aplikacji macOS i Mac Catalyst.

ReferenceNativeSymbol

Grupę ReferenceNativeSymbol elementów można użyć do określenia sposobu obsługi danego symbolu natywnego: zignoruj go lub poproś konsolidatora natywnego o jego zachowanie (przekazując symbol jako -u ... lub w pliku symboli do konsolidatora natywnego).

Istnieją dwa obsługiwane typy metadanych:

  • SymbolType ObjectiveCClass: lub FunctionField. Służy do obliczania pełnej rodzimej nazwy symbolu (na przykład rodzimego symbolu klasy MyClass Objective-C to _OBJC_CLASS_$_MyClass, podczas gdy dla funkcji MyFunction jest to tylko _MyFunction).
  • SymbolMode: albo Ignore albo nie ustawiono. Ignore oznacza, aby nie przekazywać danego symbolu do natywnego konsolidatora, domyślnie symbol jest przekazywany.

SymbolType parametr jest wymagany, chociaż SymbolMode nie jest.

Przykładowy symbol do zachowania:

<ItemGroup>
    <ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" />
</ItemGroup>

Przykładowy symbol do zignorowania:

<ItemGroup>
    <ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" SymbolMode="Ignore" />
</ItemGroup>

RequirePołączenieZAtrybutemDlaWyszukiwaniaKlasyObjectiveC

Automatycznie przeskanujemy wszystkie biblioteki pod kątem klas zarządzanych mapujących na istniejące klasy Objective-C, a następnie w czasie kompilacji utworzymy natywne odwołanie dla tych klas Objective-C.

W ten sposób natywny linker nie usunie tych klas Objective-C, myśląc, że nie są używane.

Może to jednak spowodować problem, jeśli klasa zarządzana odwołuje się do klasy Objective-C, która nie istnieje. Właściwą poprawką jest usunięcie takich klas zarządzanych z kompilacji, ale może to być kłopotliwe, w szczególności jeśli klasa zarządzana pochodzi z odwołania binarnego (takiego jak NuGet).

W takich przypadkach można ustawić właściwość RequireLinkWithAttributeForObjectiveCClassSearch na true , aby skanować biblioteki tylko za pomocą atrybutu [LinkWith] dla klas Objective-C:

<PropertyGroup>
  <RequireLinkWithAttributeForObjectiveCClassSearch>true</RequireLinkWithAttributeForObjectiveCClassSearch>
</PropertyGroup>

RunWithOpen

Ta właściwość określa, czy aplikacje są uruchamiane przy użyciu open polecenia w systemie macOS, czy też czy plik wykonywalny aplikacji jest wykonywany bezpośrednio.

Dotyczy to tylko aplikacji macOS i Mac Catalyst.

Domyślna wartość to true. W tym trybie aplikacja zostanie uruchomiona przez macOS tak jak każda inna aplikacja UI, wszystkie dane wyjściowe stdout/stderr zostaną zignorowane przez macOS, a polecenie dotnet run zakończy się natychmiast po uruchomieniu aplikacji.

Jeśli ustawiono false, wszystkie dane outputu stdout/stderr zostaną wyświetlone w bieżącym terminalu, a dotnet run polecenie nie zostanie zakończone, dopóki aplikacja się nie zakończy.

Następujące właściwości mogą służyć do konfigurowania zachowania w przypadku ustawienia wartości true (tj. przy użyciu open polecenia ):

OtwórzNowąInstancję

Jeśli nowe wystąpienie zostanie otwarte, jeśli aplikacja jest już uruchomiona (domyślnie to false).

Spowoduje to przekazanie -n do open, jeśli ustawiono na true.

Przykład:

$ dotnet run -p:OpenNewInstance=false

OpenArguments

Ta właściwość może służyć do przekazywania dodatkowych argumentów do open polecenia.

Przykład (aby ustawić zmienne środowiskowe):

$ dotnet run -p:OpenArguments="--env VARIABLE1=VALUE1 --env VARIABLE2=value2"

Przykład (aby przekierować stdout i stderr do pliku):

$ dotnet run -p:OpenArguments="--stdout /tmp/stdout.txt --stderr /tmp/stderr.txt"

Uruchom polecenie man open , aby wyświetlić listę wszystkich akceptowanych opcji open .

StandardOutputPath

Tej właściwości można użyć do przekierowania danych wyjściowych stdout z aplikacji do pliku.

Przykład zapisu w pliku:

$ dotnet run -p:StandardOutputPath=stdout.txt

Przykład pisania do bieżącego terminala.

$ dotnet run -p:StandardOutputPath=$(tty)
[... Console.WriteLine output from app ...]

Uwaga: można to również zrobić, przekazując --stdout ... przy użyciu właściwości OpenArguments .

StandardErrorPath

Tej właściwości można użyć do przekierowania danych wyjściowych stderr z aplikacji do pliku.

Przykład zapisu w pliku:

$ dotnet run -p:StandardErrorPath=stderr.txt

Przykład pisania w bieżącym terminalu:

$ dotnet run -p:StandardErrorPath=$(tty)
[... Console.Error.WriteLine output from app ...]

Uwaga: można to również zrobić, przekazując --stderr ... przy użyciu właściwości OpenArguments .

StandardInputPath

Tej właściwości można użyć do przekierowania danych wejściowych stdin do aplikacji z pliku.

Przykład:

$ dotnet run -p:StandardInputPath=stdin.txt

Uwaga: można to również zrobić, przekazując --stdin ... przy użyciu właściwości OpenArguments .

SdkIsSimulator

Ta właściwość jest właściwością tylko do odczytu (ustawienie nie będzie miało żadnego efektu), która określa, czy kompilujemy symulator, czy nie.

Jest ona ustawiana tylko po ocenie importów i właściwości . Oznacza to, że właściwość nie jest ustawiona podczas oceniania właściwości w pliku projektu, więc nie będzie to działać:

<PropertyGroup>
  <EnableCodeSigning Condition="'$(SdkIsSimulator)' == 'true'">false</EnableCodeSigning>
</PropertyGroup>

Jednak jeden z następujących elementów działa:

<ItemGroup>
  <!-- item groups (and their conditions) are evaluated after properties have been evaluated -->
  <CustomEntitlements Condition="'$(SdkIsSimulator)' == 'true'" Include="com.apple.simulator-entitlement" Type="Boolean" Value="true" />
  <CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);ConfigureSimulatorSigning</CodesignConfigureDependsOn>
</ItemGroup>
<!-- targets are executed after properties have been evaluated -->
<Target Name="ConfigureSimulatorSigning">
  <PropertyGroup>
    <EnableCodeSigning Condition="'$(SdkIsSimulator) == 'true'">false</EnableCodeSigning>
  </PropertyGroup>
</Target>

Uwaga: ta właściwość będzie zawsze znajdować się false w systemach macOS i Mac Catalyst.

StripPath

Pełna ścieżka do strip narzędzia wiersza polecenia.

Domyślnym zachowaniem jest użycie elementu xcrun strip.

SupportedOSPlatformVersion

Określa minimalną wersję systemu operacyjnego, w ramach których aplikacja może działać.

Można również użyć właściwości specyficznej dla platformy:

TrimMode

Określa stopień szczegółowości przycinania.

Prawidłowe opcje to:

  • full: Przycinanie każdego zestawu.
  • partial: Przycinanie zestawów, które zdecydowały się na ten proces.
  • copy: Nie przycinaj żadnych zestawów.

Aby uzyskać więcej informacji na temat właściwości, zobacz TrimMode.

Uwaga / Notatka

Ze względów technicznych trymer musi być uruchamiany dla wszystkich projektów systemów iOS, tvOS, macOS i Mac Catalyst, nawet jeśli zestawy nie mają być przycinane. Z tego powodu nie można uznać za prawidłowe wyłączenie przycinania przez ustawienie PublishTrimmed na false — aby wyłączyć przycinanie, należy ustawić TrimMode=copy zamiast tego (zostanie zgłoszony błąd kompilacji, jeśli PublishTrimmed zostanie ustawione na false).

Właściwość jest równoważna TrimMode istniejącym właściwościom MtouchLink (dla systemów iOS, tvOS i Mac Catalyst) i LinkMode (dla systemu macOS), ale prawidłowe wartości właściwości są różne (mimo że semantyka jest taka sama):

MtouchLink/LinkMode TrimMode
Pełny pełny
SDKOnly częściowo
Żaden kopiuj

W dalszej perspektywie właściwości MtouchLink i LinkMode zostaną wycofane; proszę używać TrimMode zamiast nich.

Domyślny tryb przycinania zależy od wielu czynników i może również ulec zmianie w przyszłości.

Bieżące wartości domyślne (od platformy .NET 9) to:

  • iOS i iOS: partial podczas kompilowania dla urządzenia, a copy podczas kompilowania dla symulatora.
  • macOS: zawsze copy.
  • Mac Catalyst: partial dla konfiguracji "Release", copy w innym przypadku.

Wyjątki:

  • Wartość domyślna jest zawsze full w przypadku kompilowania za pomocą funkcji NativeAOT.
  • Program MAUI zmienia domyślną wartość na copy, gdy kompilowana jest konfiguracja Debugi interpreter jest włączony przy użyciu UseInterpreter (co MAUI również domyślnie włącza przy użyciu konfiguracji "Debug").

Uwaga / Notatka

Domyślny tryb przycinania może ulec zmianie w przyszłości.

tvOSMinimumVersion

Określa minimalną wersję systemu tvOS, w ramach których aplikacja może działać.

Dotyczy systemu tvOS; ustawienie tej wartości spowoduje ustawienie SupportedOSPlatformVersion dla projektów tvOS (tylko).

UseFloatingTargetPlatformVersion

Właściwość logiczna określająca, czy projekty bibliotek powinny używać przestawnej wersji platformy docelowej, czy najstarszej dostępnej wersji platformy.

Domyślnie (począwszy od .NET 10) projekty bibliotek, które nie mają jawnie określonego TargetPlatformVersion, użyją najstarszych dostępnych zestawów referencyjnych dla bieżącej wersji platformy .NET. Zapewnia to maksymalną zgodność i umożliwia kompilowanie kodu biblioteki względem minimalnej powierzchni interfejsu API dostępnej dla platformy docelowej.

Jednak to domyślne zachowanie oznacza, że projekty bibliotek są tworzone inaczej niż projekty wykonywalne (które korzystają z najnowszej wersji platformy). Kod, który działa w projekcie wykonywalnym, może nie być kompilowany po przeniesieniu do projektu biblioteki, jeśli używa interfejsów API dostępnych tylko w nowszych wersjach platformy.

Ustawienie tej właściwości na true wyłącza automatyczny wybór najstarszej wersji platformy, co pozwala projektowi biblioteki na użycie domyślnej (najnowszej) wersji platformy, podobnie jak robią to projekty wykonywalne.

Przykład:

<PropertyGroup>
  <!-- Use the latest platform version instead of the oldest -->
  <UseFloatingTargetPlatformVersion>true</UseFloatingTargetPlatformVersion>
</PropertyGroup>

Ustawienie domyślne: false (użyj najstarszej wersji platformy dla projektów biblioteki na platformie .NET 10+).

Ta właściwość dotyczy tylko projektów biblioteki (OutputType=Library), które nie są rozszerzeniami aplikacji i nie określiły jawnej wersji platformy docelowej (wersja platformy docelowej jest opcjonalnym numerem wersji na końcu TargetFramework właściwości, na przykład TargetFramework net10.0-ios26.0 wersja platformy docelowej jest jawnie 26.0).

Ta właściwość została wprowadzona na platformie .NET 10.

UseHardenedRuntime

Właściwość logiczna określająca, czy jest włączone środowisko uruchomieniowe ze wzmocnionymi zabezpieczeniami.

Dotyczy projektów macOS i Mac Catalyst.

Użyj interpretera

Włącza interpretera (dla wszystkich zestawów).

Jest to odpowiednik ustawienia MtouchInterpreter=all.

Dotyczy aplikacji dla systemów iOS, tvOS i Mac Catalyst (kiedy nie używa się funkcji NativeAOT).

Domyślne zachowanie polega na tym, że interpreter nie jest włączony.

Uwaga / Notatka

Domyślne ustawienie dla konfiguracji UseInterpreter=true jest zmieniane przez program MAUI na "Debug".

Aby uzyskać więcej informacji, zobacz MtouchInterpreter .

UseNativeHttpHandler

Określa, czy natywna procedura obsługi http powinna być domyślną procedurą obsługi http, czy też nie.

Wartość domyślna: true dla wszystkich platform z wyjątkiem systemu macOS.

WalidacjaUprawnień

Określ, czy należy zweryfikować uprawnienia żądań aplikacji.

Prawidłowe wartości dla tej właściwości:

  • disable: Walidacja jest wyłączona.
  • warn: wszelkie błędy weryfikacji są wyświetlane jako ostrzeżenia.
  • error: wszelkie błędy weryfikacji są wyświetlane jako błędy. Jest to wartość domyślna.

Proces weryfikacji może nie weryfikować każdego uprawnienia ani nie ma gwarancji, że nie jest zbytnio entuzjastyczny.

Jeśli walidacja nie powiedzie się w przypadku uprawnień, które rzeczywiście działają, zgłoś nowy problem.

ValidateXcodeVersion

Określ, czy ma zostać zweryfikowana bieżąca wersja programu Xcode.

Wartością domyślną jest "weryfikuj"; aby wyłączyć, ustaw na false.

Uwaga / Notatka

Użycie innej niż zalecana wersja może powodować problemy w dalszej części procesu kompilacji.

XamMacResourcePrefix

Katalog, w którym są przechowywane zasoby (ten prefiks zostanie usunięty podczas kopiowania zasobów do pakietu aplikacji).

Dotyczy projektów systemu macOS.

Rozważ użycie ujednoliconej właściwości AppBundleResourcePrefix .

Zobacz również IPhoneResourcePrefix i MonoMacResourcePrefix.

ZipPath

Pełna ścieżka do zip narzędzia wiersza polecenia.

Domyślnym zachowaniem jest użycie elementu xcrun zip.