Поделиться через


Свойства сборки

Свойства MSBuild управляют поведением целевых объектов. Они указываются в файле проекта, например MyApp.csproj, в MSBuild PropertyGroup.

AdbTarget

Свойство $(AdbTarget) указывает целевое устройство Android, на котором может быть установлен или удален пакет Android. Значение этого свойства совпадает со значением параметра adb целевого устройства.

AfterGenerateAndroidManifest

Целевые объекты, перечисленные в этом свойстве, будут запускаться непосредственно после внутреннего целевого объекта _GenerateJavaStubs, в котором создается файл AndroidManifest.xml в $(IntermediateOutputPath). Если вы хотите внести изменения в созданный файл AndroidManifest.xml, это можно сделать с помощью этой точки расширения.

AndroidAapt2CompileExtraArgs

Задает параметры командной строки для передачи в команду компиляции aapt2 при обработке ресурсов и ресурсов Android.

AndroidAapt2LinkExtraArgs

Задает параметры командной строки для передачи команде ссылки aapt2 при обработке ресурсов и ресурсов Android.

AndroidAddKeepAlives

Логическое свойство, определяющее, будет ли компоновщик вставлять вызовы GC.KeepAlive() внутри проектов привязки для предотвращения преждевременного сбора объектов.

Значение по умолчанию — True для сборок конфигурации выпуска.

AndroidAotAdditionalArguments

Строковое свойство, позволяющее передавать параметры компилятору Mono во время Aot задачи для проектов, имеющих $(AndroidEnableProfiledAot) либо $(AotAssemblies) заданные значения true. Строковое значение этого свойства добавляется в файл ответов при вызове кросс-компилятора Mono.

Как правило, это свойство следует оставлять пустым. Но в некоторых особых случаях оно может обеспечить полезные гибкие возможности.

Свойство $(AndroidAotAdditionalArguments) отличается от связанного $(AndroidExtraAotOptions) свойства; $(AndroidAotAdditionalArguments) передает полные автономные параметры, разделенные пробелами, например --verbose или --debug компилятору AOT, в то время как $(AndroidExtraAotOptions) содержит аргументы, разделенные запятыми, которые являются частью --aot параметра компилятора AOT.

AndroidAotCustomProfilePath

Файл, который aprofutil должен создать для хранения данных профилировщика.

AndroidAotProfiles

Строковое свойство, которое позволяет разработчику добавлять профили AOT из командной строки. Это список абсолютных путей с запятой или запятыми.

AndroidAotProfilerPort

Порт, к которому aprofutil должен подключаться при получении данных профилирования.

AndroidAotEnableLazyLoad

Включите отложенную (отложенную) загрузку сборок AOT-d вместо предварительной загрузки их при запуске. Значение по умолчанию — True для сборок выпуска с любой формой AOT.

Представлено в .NET 6.

AndroidApkDigestAlgorithm

Строковое значение, указывающее алгоритм дайджеста для использования jarsigner -digestalg.

Значение по умолчанию — SHA-256.

AndroidApkSignerAdditionalArguments

Строковое свойство, позволяющее разработчику предоставлять аргументы средству apksigner .

AndroidApkSigningAlgorithm

Строковое значение, указывающее алгоритм подписи для использования jarsigner -sigalg.

Значение по умолчанию — SHA256withRSA.

AndroidApplication

Логическое значение, указывающее, для чего предназначен проект: для приложения Android (True) или для библиотеки Android (False или не задано).

Только один проект со значением <AndroidApplication>True</AndroidApplication> может присутствовать в пакете Android. (К сожалению, это требование не проверяется, что может привести к тонким и странным ошибкам в отношении ресурсов Android.)

AndroidApplicationJavaClass

Полное имя класса Java для использования вместо android.app.Application, когда класс наследуется от Android.App.Application.

Свойство $(AndroidApplicationJavaClass) обычно задается другими свойствами, такими как $(AndroidEnableMultiDex) свойство MSBuild.

AndroidAvoidEmitForPerformance

Логическое свойство, определяющее, следует ли System.Reflection.Emit "избегать" повышения производительности запуска. По умолчанию это свойство имеет значение True.

System.Reflection.Emit Использование имеет заметное влияние на производительность запуска в Android. Это поведение по умолчанию отключено для следующих параметров компонентов:

  • Switch.System.Reflection.ForceInterpretedInvoke: после второго вызова MethodInfo.Invoke() или ConstructorInfo.Invoke()кода создается код для повышения производительности повторяющихся вызовов.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: после второго вызова для получения службы из контейнера внедрения зависимостей код создается для повышения производительности повторяющихся вызовов.

В большинстве приложений Android желательно отключить это поведение.

Дополнительные сведения о доступных коммутаторах функций см. в документации по библиотекам базовых классов.

Добавлено в .NET 8.

AndroidBinUtilsPath

Путь к каталогу, который содержит средства binutil для Android, такие как собственный компоновщик ld и собственный ассемблер as. Эти средства включены в рабочую нагрузку .NET для Android.

Значение по умолчанию — $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Строковое значение, указывающее, как следует распространять исключения, если предоставленный в .NET для Android тип или интерфейс реализует тип или интерфейс .NET с точки зрения типов Java, например Android.Runtime.InputStreamInvoker и , или System.IO.StreamAndroid.Runtime.JavaDictionary .System.Collections.IDictionary

  • Java: исходный тип исключения Java распространяется как есть.

    Java означает, что, например, InputStreamInvoker неправильно реализует System.IO.Stream API, так как Java.IO.IOException его можно создать Stream.Read() вместо System.IO.IOException.

  • System: исходный тип исключения Java перехватывается и упаковывается в соответствующий тип исключения .NET.

    Systemозначает, что, например, InputStreamInvoker правильно реализует System.IO.Streamи Stream.Read() не будет вызывать Java.IO.IOException экземпляры. (Вместо этого может вызываться System.IO.IOException содержащий Java.IO.IOException Exception.InnerException значение.)

    По умолчанию устанавливается значение System.

AndroidBoundInterfacesContainConstants

Логическое свойство, определяющее, будут ли поддерживаться константы привязки в интерфейсах, или обходной путь создания IMyInterfaceConsts класса.

Значение по умолчанию — True.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Логическое свойство, которое будет поддерживаться по умолчанию и статическим элементам в интерфейсах, или старое обходное решение для создания класса с братом, содержащего статические элементы, например abstract class MyInterface.

Значение по умолчанию используется True в .NET 6 и False для устаревших версий.

AndroidBoundInterfacesContainTypes

Логическое свойство, которое будет поддерживаться типами, вложенными в интерфейсы, или обходным решением для создания не вложенных типов, таких как IMyInterfaceMyNestedClass.

Значение по умолчанию используется True в .NET 6 и False для устаревших версий.

AndroidBuildApplicationPackage

Логическое значение, указывающее, следует ли создавать и подписывать пакет (APK-файл). Задание этого значения True эквивалентно использованию SignAndroidPackage Целевой объект сборки.

По умолчанию это свойство имеет значение False.

AndroidBundleConfigurationFile

Указывает имя файла, который будет использовать в качестве файла конфигурацииbundletool при создании пакета приложения Android. Этот файл управляет некоторыми аспектами создания пакетов APK из пакета, например определяет, по каким характеристикам пакет разбивается для создания APK. .NET для Android настраивает некоторые из этих параметров автоматически, в том числе список расширений файлов, чтобы оставить незапечатанным.

Это свойство используется, только если $(AndroidPackageFormat) имеет значение aab.

AndroidBundleToolExtraArgs

Задает параметры командной строки для передачи команде bundletool при сборке пакетов приложений.

AndroidClassParser

Строковое свойство, которое управляет .jar анализом файлов. Возможные значения включают:

  • class-parse: использует class-parse.exe для непосредственного синтаксического анализа байт-кода Java без использования виртуальной машины Java.

  • jar2xml: это значение устарело и больше не поддерживается.

AndroidCodegenTarget

Строковое свойство, которое управляет целевым объектом ABI создания кода. Возможные значения включают:

  • XamarinAndroid: это значение устарело и больше не поддерживается.

  • XAJavaInterop1: использует Java.Interop для вызова JNI. Сборки привязки с XAJavaInterop1 можно создавать и выполнять только с помощью Xamarin.Android 6.1 или более поздней версии. Xamarin.Android 6.1 и более поздних версий связывает Mono.Android.dll с этим значением.

Значение по умолчанию — XAJavaInterop1.

AndroidCreatePackagePerAbi

Логическое свойство, определяющее, должен ли быть создан набор файлов -один на ABI, указанный в $(AndroidSupportedAbis)--, вместо поддержки всех API в одном .apk.

См. также руководство Создание пакетов APK для конкретного ABI.

AndroidCreateProguardMappingFile

Логическое свойство, которое управляет созданием файла сопоставления proguard в рамках процесса сборки.

Добавление следующего файла в csproj приведет к созданию файла и использует AndroidProguardMappingFile свойство для управления расположением окончательного файла сопоставления.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

При создании .aab файлов файл сопоставления автоматически включается в пакет. Нет необходимости отправлять его в Google Play Store вручную. При использовании .apk файлов AndroidProguardMappingFile необходимо отправить вручную.

Значение по умолчанию используется True при использовании $(AndroidLinkTool)=r8.

AndroidDebugKeyAlgorithm

Указывает алгоритм по умолчанию для debug.keystore. Значение по умолчанию — RSA.

AndroidDebugKeyValidity

Указывает срок действия по умолчанию для debug.keystore. Значение по умолчанию — 10950 или 30 years30 * 365 .

AndroidDebugStoreType

Указывает формат файла хранилища ключей, используемый для debug.keystore. По умолчанию имеет значение pkcs12.

AndroidDeviceUserId

Разрешает развертывание и отладку приложения с использованием гостевой или рабочей учетной записи. Значением является значение uid, полученное из следующей команды adb:

adb shell pm list users

Приведенная выше команда вернет следующие данные:

Users:
	UserInfo{0:Owner:c13} running
	UserInfo{10:Guest:404}

uid — первое целочисленное значение. В приведенных выше выходных данных они 0 и 10.

AndroidDexTool

Свойство стиля перечисления с допустимыми значениями dx или d8. Указывает, какой компилятор Android dex используется во время процесса сборки .NET для Android. Значение по умолчанию — dx. Ознакомьтесь с нашей документацией по D8 и R8.

AndroidEnableDesugar

Логическое свойство, которое определяет, включен ли desugar. В настоящее время Android не поддерживает все функции Java 8, а цепочка инструментов по умолчанию реализует новые языковые функции, выполняя преобразования байт-кода, вызываемые desugarв выходных данных компилятора javac . Значение по умолчанию используется и используется$(AndroidDexTool)=d8.True False $(AndroidDexTool)=dx

AndroidEnableGooglePlayStoreChecks

Логическое свойство, позволяющее разработчикам отключить следующие проверки Google Play Store: XA1004, XA1005 и XA1006. Отключение этих проверок полезно для разработчиков, которые не нацелены на Google Play Store и не хотят запускать эти проверки.

AndroidEnableMarshalMethods

Логическое свойство, определяющее, включены ли методы маршала LLVM. Методы маршалирования LLVM — это оптимизация запуска приложения, которая использует собственные точки входа для регистрации методов Java native .

Это свойство имеет значение False по умолчанию.

Добавлено в .NET 8.

AndroidEnableMultiDex

Логическое свойство, которое определяет, будет ли поддерживаться Multi-DEX в окончательном файле .apk.

По умолчанию это свойство имеет значение False.

AndroidEnableObsoleteOverrideInheritance

Логическое свойство, определяющее, автоматически ли привязанные методы наследуют [Obsolete] атрибуты от методов, которые они переопределяют.

Поддержка этого свойства добавлена в .NET 8.

По умолчанию это свойство имеет значение True.

AndroidEnablePreloadAssemblies

Логическое свойство, которое определяет, загружаются ли все управляемые сборки, упакованные в пакет приложения, во время запуска процесса или нет.

Если задано значение True, все сборки, объединенные в пакет приложения, будут загружены во время запуска процесса до вызова кода приложения.

Если задано значение False, сборки загружаются только по мере необходимости. Загрузка сборок по мере необходимости позволяет приложениям запускаться быстрее, а также более согласованы с семантикой .NET для настольных компьютеров. Чтобы убедиться в ускорении работы, добавьте timing в системное свойство debug.mono.log и в adb logcat найдите сообщение Finished loading assemblies: preloaded.

Приложения или библиотеки, которые используют внедрение зависимостей, могут требовать, чтобы это свойствоTrue, в свою очередь, требовало, чтобы AppDomain.CurrentDomain.GetAssemblies() возвращать все сборки в пакете приложений, даже если сборка не потребуется.

По умолчанию это значение равно False.

AndroidEnableProfiledAot

Логическое свойство, которое определяет, используются ли профили AOT во время компиляции Ahead Of Time.

Профили перечислены в группе элементов @(AndroidAotProfile) Группа элементов. Эта ItemGroup содержит профили по умолчанию. Ее можно переопределить, удалив существующие и добавив собственные профили AOT.

По умолчанию это свойство имеет значение False.

AndroidEnableRestrictToAttributes

Свойство перечисления obsolete с допустимыми значениями и disable.

Если задано значение obsolete, типы и члены, помеченные заметкой androidx.annotation.RestrictTo Java или не экспортированные пакеты Java, будут помечены атрибутом [Obsolete] в привязке C#.

Этот [Obsolete] атрибут содержит описательное сообщение, объясняющее, что владелец пакета Java считает API "внутренним" и предупреждает о его использовании.

Этот атрибут также содержит пользовательский код XAOBS001 предупреждения, чтобы его можно было подавлять независимо от устаревшего API "обычного".

Если задано значение disable, API будет создан как обычный без дополнительных атрибутов. (Это то же поведение, что и до .NET 8.)

Добавление [Obsolete] атрибутов вместо автоматического удаления API было сделано для сохранения совместимости API с существующими пакетами. Если вместо этого вы предпочитаете удалять элементы с @RestrictTo заметками или находятся в не экспортированных пакетах Java, вы можете использовать файлы преобразования в дополнение к этому свойству, чтобы предотвратить привязку этих типов:

<remove-node path="//*[@annotated-visibility]" />

Поддержка этого свойства добавлена в .NET 8.

Это свойство задано obsolete по умолчанию.

AndroidEnableSGenConcurrent

Логическое свойство, которое определяет, будет ли использоваться параллельный сборщик мусора Mono.

По умолчанию это свойство имеет значение False.

AndroidErrorOnCustomJavaObject

Логическое свойство, которое определяет, можно ли реализовать типы Android.Runtime.IJavaObjectбез наследования от Java.Lang.Object или Java.Lang.Throwable:

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

Если значение равно true, такие типы будут вызывать ошибку XA4212. Если значение false, будет сформировано предупреждение XA4212.

По умолчанию это свойство имеет значение True.

AndroidExplicitCrunch

Это свойство больше не поддерживается.

AndroidExtraAotOptions

Строковое свойство, позволяющее передавать параметры компилятору Mono во время Aot задачи для проектов, имеющих $(AndroidEnableProfiledAot) либо $(AotAssemblies) заданные значения true. Строковое значение этого свойства добавляется в файл ответов при вызове кросс-компилятора Mono.

Как правило, это свойство следует оставлять пустым. Но в некоторых особых случаях оно может обеспечить полезные гибкие возможности.

Свойство $(AndroidExtraAotOptions) отличается от связанного $(AndroidAotAdditionalArguments) свойства; $(AndroidAotAdditionalArguments) помещает аргументы, разделенные запятыми, в --aot параметр компилятора Mono. В свою очередь, $(AndroidExtraAotOptions) передает в компилятор разделенные пробелами полные автономные параметры, такие как --verbose или --debug.

AndroidFastDeploymentType

Список разделенных двоеточиями (:) значений для управления типами, которые можно развернуть в каталоге быстрого развертывания на целевом устройстве, если свойство MSBuild $(EmbedAssembliesIntoApk) имеет значение False. Если ресурс быстро развернут, он не встраивается в создаваемый файл .apk, что может ускорить развертывание. (Чем быстрее развертывается, тем реже .apk необходимо перестроиться, а процесс установки может быть быстрее.) Допустимые значения:

  • Assemblies: развертывание сборок приложения.
  • Dexes: развертывание файлов .dex, собственных библиотек и карт типов. Это Dexes значение можно использовать только на устройствах под управлением Android 4.4 или более поздней версии (API-19).

Значение по умолчанию — Assemblies.

Поддержка быстро развертываемых ресурсов и активов через эту систему была удалена в фиксации f0d565fe. Это было вызвано тем, что для работы требуются устаревшие API.

Экспериментальное.

AndroidFragmentType

Указывает полный тип по умолчанию, используемый для всех элементов макета <fragment> при создании кода привязок макета. Значение по умолчанию — стандартный тип Android Android.App.Fragment .

AndroidGenerateJniMarshalMethods

Логическое свойство, которое позволяет создавать методы маршала JNI в рамках процесса сборки. Это существенно сокращает использование System.Reflection во вспомогательном коде привязки.

Значение по умолчанию — False. Если разработчики хотят использовать новую функцию маршалов JNI, они могут задать

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

в собственном файле .csproj. Вы также можете указать свойства в командной строке с помощью параметра

-p:AndroidGenerateJniMarshalMethods=True

Экспериментальное. Значение по умолчанию — False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Строковое свойство, которое можно использовать для добавления параметров в jnimarshalmethod-gen.exe вызов и полезно для отладки, чтобы такие параметры, как -v, -dили --keeptemp можно использовать.

Значение по умолчанию — пустая строка. Его можно задать в файле .csproj или в командной строке. Например:

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

или:

-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

AndroidGenerateLayoutBindings

Включает создание кода программной части макета, если присвоить значение true, или полностью отключает его, если задать значение false.

Значение по умолчанию — false.

AndroidGenerateResourceDesigner

Значение по умолчанию — true. Если задано значение false, отключает создание Resource.designer.cs.

AndroidHttpClientHandlerType

Управляет стандартной реализацией System.Net.Http.HttpMessageHandler, которую будет использовать конструктор по умолчанию System.Net.Http.HttpClient. Значение — имя типа с указанием сборки подкласса HttpMessageHandler, подходящее для использования с System.Type.GetType(string).

В .NET 6 и более поздней версии это свойство действует только при использовании вместе с $(UseNativeHttpHandler)=true. Наиболее распространенные значения для этого свойства:

  • Xamarin.Android.Net.AndroidMessageHandler: используйте API Java для Android для выполнения HTTP-запросов. Это похоже на устаревшую версию Xamarin.Android.Net.AndroidClientHandler с несколькими улучшениями. Он поддерживает ПРОТОКОЛ HTTP 1.1 и TLS 1.2. Это обработчик сообщений HTTP по умолчанию.

  • System.Net.Http.SocketsHttpHandler, System.Net.Http: обработчик сообщений по умолчанию в .NET. Он поддерживает протокол HTTP/2, TLS 1.2 и рекомендуется обработчик http-сообщений для использования с Grpc.Net.Client. Это значение эквивалентно $(UseNativeHttpHandler)=false.

  • Отмена набора или пустой строки, эквивалентной System.Net.Http.HttpClientHandler, System.Net.Http

    Соответствует параметру Default на страницах свойств Visual Studio.

    Мастер создания проектов выбирает этот параметр для новых проектов, если указана минимальная версия AndroidAndroid 4.4.87 или более ранняя в Visual Studio или если для целевых платформ установлено Современная разработка или Максимальная совместимость в Visual Studio для Mac.

  • System.Net.Http.HttpClientHandler, System.Net.Http: используйте управляемый HttpMessageHandler.

    Соответствует управляемому параметру на страницах свойств Visual Studio.

Примечание.

В .NET 6 указанный тип не должен быть Xamarin.Android.Net.AndroidClientHandler или System.Net.Http.HttpClientHandler наследуться от одного из этих классов. Если вы переносите "классический" Xamarin.Android, используйте AndroidMessageHandler или наследуйте настраиваемый обработчик из него.

Примечание.

$(AndroidHttpClientHandlerType) Поддержка свойства работает путем задания переменной XA_HTTP_CLIENT_HANDLER_TYPEсреды. $XA_HTTP_CLIENT_HANDLER_TYPE Значение, найденное в файле с действием сборки@(AndroidEnvironment) будет иметь приоритет.

AndroidIncludeWrapSh

Логическое значение, указывающее, следует ли упаковать скриптwrap.sh оболочки Android в APK. Значение по умолчанию, false так как скрипт-оболочка может значительно повлиять на способ запуска приложения и работы, и скрипт должен быть включен только при необходимости, например при отладке или изменении поведения запуска приложения или среды выполнения.

Скрипт добавляется в проект с помощью действия сборки ,@(AndroidNativeLibrary) Действие сборки, так как оно помещается в тот же каталог, что и собственные библиотеки для конкретной архитектуры, и должно быть названо wrap.sh.

Самый простой способ указать путь к скрипту wrap.sh — это разместить его в каталоге, имя которого совпадает с конечной архитектурой. Это сработает только в том случае, если у вас только один вариант wrap.sh для архитектуры:

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

Однако если в проекте требуется более одного решения wrap.sh для каждой архитектуры, этот подход не будет работать. Вместо этого в таких случаях для указания имени можно использовать метаданные Link AndroidNativeLibrary:

<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
  <Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>

Если используются метаданные Link, путь, указанный в его значении, должен представлять собой допустимый путь к собственной библиотеке для конкретной архитектуры относительно корневого каталога APK. Формат пути — lib\ARCH\wrap.sh, где ARCH может быть одним из следующего:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidIncludeAssetPacksInPackage

Это свойство определяет, если сборка пакетов активов автоматически включается в окончательный .aab файл. По умолчанию он будет по умолчанию true.

В некоторых случаях пользователю может потребоваться освободить промежуточный выпуск. В таких случаях пользователю не нужно обновлять пакет ресурсов. Особенно, если содержимое пакета ресурсов не изменилось. Это свойство позволяет пользователю пропускать пакеты ресурсов, если они не требуются.

Добавлено в .NET 9

AndroidInstallJavaDependencies

Значение по умолчанию — для true сборок командной строки. Если задано значение true, при запуске <InstallAndroidDependencies/> целевого объекта включается установка пакета SDK для Java.

Поддержка этого свойства добавлена в .NET 9.

AndroidJavadocVerbosity

Указывает, как при импорте документации Javadoc в проектах привязки следует использовать подробные комментарии к XML-документации по C#.

Требуется использование @(JavaSourceJar) действие сборки.

Свойство $(AndroidJavadocVerbosity) имеет тип перечисления full , с возможными значениями или intellisense:

Значение по умолчанию — intellisense.

AndroidKeyStore

Логическое значение, указывающее, следует ли использовать пользовательские сведения о подписи. Значение по умолчанию — False. Это означает, что для подписания пакетов будет использоваться ключ подписи отладки по умолчанию.

AndroidLaunchActivity

Действие Android для запуска.

AndroidLinkMode

Указывает, какой тип компоновки должен быть применен для сборок, содержащихся в пакете Android. Используется только в проектах приложений Android. Значение по умолчанию: SdkOnly. Допустимые значения:

  • None: компоновка не будет выполнена.

  • SdkOnly: компоновка будет выполнена только для библиотеки базовых классов, но не сборок пользователя.

  • Full: компоновка будет выполнена для библиотеки базовых классов и сборок пользователя.

    Примечание.

    Использование для свойства AndroidLinkMode значения Full часто приводит к ненадлежащей работе приложений, особенно при использовании отражения. Используйте это значение, только если это действительно необходимо.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

Когда trueсистема сборки будет связывать вложенные типы класса Resource.Designer.cs Resource во всех сборках. Код IL, использующий эти типы, будет обновлен для использования значений напрямую, а не для доступа к полям.

Связывание вложенных типов может иметь небольшое влияние на уменьшение размера apk, а также может помочь с производительностью запуска. Связаны только сборки release.

Экспериментальное. Только для работы с кодом, таким как

var view = FindViewById(Resources.Ids.foo);

Любые другие сценарии (например, отражение) не будут поддерживаться.

AndroidLinkSkip

Указывает список разделенных точкой с запятой (;) имен сборок, которые не должны быть связаны, без расширений имен файлов. Используется только в проектах приложений Android.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

Свойство стиля перечисления с допустимыми значениями proguard или r8. Указывает, какое средство для сокращения кода используется для кода Java. Значение по умолчанию — пустая строка или proguard если $(AndroidEnableProguard) это True. Ознакомьтесь с нашей документацией по D8 и R8.

AndroidLintEnabled

Логическое свойство, позволяющее разработчику запускать средство android lint в рамках процесса упаковки.

При $(AndroidLintEnabled)=True используются следующие свойства:

Можно также использовать следующие действия сборки:

См. справку по Lint, чтобы узнать больше об инструментах Android lint.

AndroidLintEnabledIssues

Строковое свойство, которое представляет собой список проблем с запятыми для включения.

Используется только в том случае, если $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Строковое свойство, которое представляет собой список проблем с запятыми для отключения.

Используется только в том случае, если $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

Строковое свойство, которое представляет собой список проблем с запятыми для проверки.

Используется только в том случае, если $(AndroidLintEnabled)=True.

Примечание. Проверяться будут только эти проблемы.

AndroidManagedSymbols

Логическое свойство, которое определяет, создаются ли точки последовательности, чтобы можно было извлечь имя файла и номер строки из трассировки стека Release.

AndroidManifest

Определяет имя файла, которое будет использоваться в качестве шаблона для манифеста AndroidManifest.xml приложения. Во время сборки необходимые значения будут объединены для создания фактического файла AndroidManifest.xml. $(AndroidManifest) должен содержать имя пакета в атрибуте /manifest/@package.

AndroidManifestMerger

Указывает реализацию для слияния файлов AndroidManifest.xml. Это свойство стиля перечисления, где legacy выбирает исходную реализацию C#, а manifestmerger.jar выбирает реализацию Java в Google.

По умолчанию сейчас используется значение manifestmerger.jar. Если вы хотите использовать старую версию, добавьте следующую версию в csproj

<AndroidManifestMerger>legacy</AndroidManifestMerger>

Средство слияния Google обеспечивает поддержку xmlns:tools="http://schemas.android.com/tools", как описано в документации по Android.

AndroidManifestMergerExtraArgs

Строковое свойство для предоставления аргументов средству документации Android.

Если вы хотите получить подробные выходные данные из средства, вы можете добавить в нее следующее .csproj.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

Свойство стиля перечисления с допустимыми значениями Xamarin или GoogleV2. Это управляет тем, какой репозиторий используется InstallAndroidDependencies целевой объект для определения доступных пакетов и версий пакетов Android и их установки.

Xamarin— это репозиторий утвержденных списков (рекомендуемых) в диспетчере sdk Visual Studio.

GoogleV2— это репозиторий полного списка (неподдерживаемый) в диспетчере SDK Visual Studio.

Если $(AndroidManifestType) значение не задано, Xamarin используется.

AndroidManifestPlaceholders

Разделенный точками с запятой список заменяемых пар "ключ-значение" для AndroidManifest.xml, где каждая пара имеет формат key=value.

Например, значение свойства assemblyName=$(AssemblyName) определяет заполнитель ${assemblyName}, который затем может появиться в AndroidManifest.xml:

<application android:label="${assemblyName}"

Это позволяет вставлять переменные из процесса сборки в файл AndroidManifest.xml.

AndroidMultiDexClassListExtraArgs

Строковое свойство, позволяющее разработчикам передавать аргументы com.android.multidex.MainDexListBuilder при создании multidex.keep файла.

Один из частных случаев — появление следующей ошибки во время компиляции dx.

com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded

Если возникает эта ошибка, в файл .csproj можно добавить следующее:

<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>

что позволит шагу dx выполнить успешное выполнение.

AndroidPackageFormat

Свойство стиля перечисления с допустимыми значениями apk или aab. Указывает, нужно ли упаковать приложение Android в виде APK-файла или пакета приложений Android. Пакеты приложений — это новый формат для сборок Release, предназначенных для отправки на Google Play. Значение по умолчанию — apk.

Если параметр $(AndroidPackageFormat) имеет значение aab, то устанавливаются другие свойства MSBuild, которые необходимы для пакетов приложений Android:

Это свойство будет устарело для .net 6. Пользователи должны переключиться на более новую AndroidPackageFormatsверсию.

AndroidPackageFormats

Свойство с запятой с разделителями с допустимыми значениями apk и aab. Указывает, нужно ли упаковать приложение Android в виде APK-файла или пакета приложений Android. Пакеты приложений — это новый формат для сборок Release, предназначенных для отправки на Google Play.

При создании сборки выпуска может потребоваться создать как, так и aab apk для распространения в различные магазины.

Значение параметра AndroidPackageFormats приведет к созданию aab;apk обоих типов. Для параметра или AndroidPackageFormats aab apk будет создан только один файл.

Значение по умолчанию — только aab;apk для Release сборок. Рекомендуется продолжать использовать только apk для отладки.

AndroidPackageNamingPolicy

Свойство перечисления для указания имен пакетов Java созданного исходного кода Java.

Единственным поддерживаемым значением является LowercaseCrc64.

AndroidProguardMappingFile

Задает правило ProGuard -printmapping для r8. Это означает, что файл mapping.txt будет создан в папке $(OutputPath). Этот файл можно затем использовать при отправке пакетов в Магазин Google PlayPlay.

По умолчанию этот файл создается автоматически при использовании AndroidLinkTool=r8 и создаст следующий файл $(OutputPath)mapping.txt.

Если вы не хотите создать этот файл сопоставления, можно использовать AndroidCreateProguardMappingFile свойство для остановки его создания. Добавьте следующее в проект

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

или используйте -p:AndroidCreateProguardMappingFile=False в командной строке.

AndroidD8IgnoreWarnings

Указывает --map-diagnostics warning info , в который передается d8. Значение по умолчанию равно True, но может быть установлено для False обеспечения более строгого поведения. Дополнительные сведения см. в исходном коде D8 и R8.

Добавлено в .NET 8.

AndroidR8IgnoreWarnings

Задает правило ProGuard -ignorewarnings для r8. Это позволяет r8 продолжать компиляцию DEX, даже если обнаружены определенные предупреждения. Значение по умолчанию равно True, но может быть установлено для False обеспечения более строгого поведения. Дополнительные сведения см. в руководстве по ProGuard.

Начиная с .NET 8, указывает --map-diagnostics warning info. Дополнительные сведения см. в исходном коде D8 и R8.

AndroidR8JarPath

Путь к r8.jar для использования с DEX-компилятором и средством сжатия кода r8. Значение по умолчанию — это путь к установке рабочей нагрузки .NET для Android. Дополнительные сведения см. в документации по D8 и R8.

AndroidResgenExtraArgs

Задает параметры командной строки для передачи команде aapt при обработке ресурсов и ресурсов Android.

AndroidResgenFile

Задает имя создаваемого файла ресурсов. По умолчанию шаблон задает Resource.designer.cs.

AndroidSdkBuildToolsVersion

Пакет средств сборки SDK для Android, который, помимо прочих, включает средства aapt и zipalign. Одновременно могут быть установлены несколько различных версий пакета средств сборки. Пакет средств сборки, выбранный для упаковки, создается путем проверки и использования "предпочтительной" версии, если она присутствует. Если такая версия отсутствует, то используется установленный пакет средств сборки последней версии.

Свойство MSBuild $(AndroidSdkBuildToolsVersion) содержит предпочтительную версию средств сборки. Система сборки .NET для Android предоставляет значение Xamarin.Android.Common.targetsпо умолчанию, а значение по умолчанию может быть переопределено в файле проекта, чтобы выбрать альтернативную версию средств сборки, если (например), последняя версия aapt завершает работу, пока предыдущая версия aapt известна.

AndroidSigningKeyAlias

Указывает псевдоним для ключа в хранилище ключей. Это значение keytool -alias, используемое при создании хранилища ключей.

AndroidSigningKeyPass

Указывает пароль для ключа в файле хранилища ключей. Это значение вводится, когда keytool запрашивает ввести пароль ключа для $(AndroidSigningKeyAlias).

Это свойство также поддерживает env: и file: префиксы, которые можно использовать для указания переменной среды или файла, содержащего пароль. Эти варианты позволяют избежать отображения пароля в журналах сборки.

Например, так можно применить переменную среды с именем AndroidSigningPassword:

<PropertyGroup>
  <AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>

Так можно применить файл, расположенный в C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>

Примечание.

Префикс env: не поддерживается, если для $(AndroidPackageFormat) задано значение aab.

AndroidSigningKeyStore

Указывает имя файла хранилища ключей, созданного с помощью keytool. Это соответствует значению, указанному для параметра keytool -keystore.

AndroidSigningStorePass

Задает пароль к $(AndroidSigningKeyStore). Это значение, предоставляемое для keytool при создании файла хранилища ключей и запросе ввести пароль хранилища ключей.

Это свойство также поддерживает env: и file: префиксы, которые можно использовать для указания переменной среды или файла, содержащего пароль. Эти варианты позволяют избежать отображения пароля в журналах сборки.

Например, так можно применить переменную среды с именем AndroidSigningPassword:

<PropertyGroup>
  <AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>

Так можно применить файл, расположенный в C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>

Примечание.

Префикс env: не поддерживается, если для $(AndroidPackageFormat) задано значение aab.

AndroidSigningPlatformKey

Указывает файл ключа, используемый для подписывания apk. Это используется только при создании system приложений.

AndroidSigningPlatformCert

Указывает файл сертификата, используемый для подписи apk. Это используется только при создании system приложений.

AndroidStripILAfterAOT

Логическое свойство, указывающее, будут ли удалены скомпилированные методы AOT.

Значением по умолчанию являетсяfalse, а тела метода скомпилированных методов AOT не будут удалены.

Если задано значение true, $(AndroidEnableProfiledAot) по умолчанию задано значение false . Это означает, что в сборках конфигурации выпуска, в которой true $(RunAOTCompilation) по умолчанию включенА функция AOT для всего. Это может привести к увеличению размера приложения. Это поведение можно переопределить, явно задав $(AndroidEnableProfiledAot) значение true в файле проекта.

Поддержка этого свойства добавлена в .NET 8.

AndroidSupportedAbis

Строковое свойство, которое содержит разделенный точками с запятой (;) список ABI, которые должны быть включены в файл .apk.

Допустимые значения:

  • armeabi-v7a
  • x86
  • arm64-v8a
  • x86_64

AndroidTlsProvider

Это свойство устарело и не должно использоваться.

AndroidUseAapt2

Логическое свойство, позволяющее разработчику управлять использованием aapt2 средства для упаковки. По умолчанию это значение будет true.

Это свойство не может иметь значение false.

AndroidUseApkSigner

Логическое свойство, позволяющее разработчику apksigner использовать средство, а не jarsigner.

AndroidUseDefaultAotProfile

Логическое свойство, которое позволяет разработчику подавлять использование профилей AOT по умолчанию.

Чтобы подавить профиль AOT по умолчанию, присвойте этому свойству значение false.

AndroidUseDesignerAssembly

Логическое свойство, которое управляет тем, что система сборки создаст _Microsoft.Android.Resource.Designer.dll приложение в Resource.Designer.cs файл. Преимуществами этого являются небольшие приложения и более быстрое время запуска.

Значение по умолчанию — true .NET 8.

В качестве автора Nuget рекомендуется отправить три версии сборки, если требуется обеспечить обратную совместимость. Один для MonoAndroid, один для net6.0-android и один для net8.0-android. Это можно сделать с помощью Xamarin.Legacy.Sdk. Это необходимо только в том случае, если проект библиотеки Nuget использует AndroidResource элементы в проекте или через зависимость.

<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>

Кроме того, отключите этот параметр до тех пор, пока не рекомендуется использовать классический и net7.0-android.

Проекты .NET 8, которые решили отключить этот параметр, не смогут использовать ссылки, которые используют его. Если вы попытаетесь использовать сборку, которая включает эту функцию в проекте, который не работает, вы получите ошибку сборки XA1034 .

Добавлено в .NET 8.

AndroidUseInterpreter

Логическое свойство, которое приводит .apk к тому, что он содержит монопретатор, а не обычный JIT.

Экспериментальное.

AndroidUseLegacyVersionCode

Логическое свойство, позволяющее разработчику вернуть вычисление versionCode обратно в старое поведение Xamarin.Android 8.2. Это свойство могут использовать ТОЛЬКО разработчики, приложения которых находятся в Google Play. Настоятельно рекомендуется использовать новое свойство $(AndroidVersionCodePattern).

AndroidUseManagedDesignTimeResourceGenerator

Логическое свойство, которое переключится на сборки времени разработки, чтобы использовать средство синтаксического анализа управляемых ресурсов, а не aapt.

AndroidUseNegotiateAuthentication

Логическое свойство, которое обеспечивает поддержку проверки подлинности NTLMv2/Negotiate в AndroidMessageHandler. Значение по умолчанию равно False.

Добавлено в .NET 7.

AndroidUseSharedRuntime

Это свойство устарело и не должно использоваться.

AndroidVersionCode

Свойство MSBuild, которое можно использовать в качестве альтернативы /manifest/@android:versionCode в AndroidManifest.xml файле. Чтобы включить эту функцию, необходимо также включить <GenerateApplicationManifest>true</GenerateApplicationManifest>. Это будет по умолчанию в .NET 6.

Это свойство игнорируется, если $(AndroidCreatePackagePerAbi) и $(AndroidVersionCodePattern) используется.

@android:versionCode — это целочисленное значение, которое необходимо увеличить для каждого выпуска Google Play. Дополнительные сведения о требованиях /manifest/@android:versionCodeсм. в документации по Android.

AndroidVersionCodePattern

Строковое свойство, позволяющее разработчику настраивать versionCode манифест. Дополнительные сведения об определении versionCode см. в разделе Создание версии кода для APK.

Например, если abi имеет значение armeabi, а versionCode в манифесте — 123, тогда {abi}{versionCode} выдает код версии 1123, если $(AndroidCreatePackagePerAbi) имеет значение True, в противном случае будет создано значение 123. Если abix86_64, а versionCode в манифесте — 44, будет получено значение 544, если $(AndroidCreatePackagePerAbi) — True, в противном случае значением будет 44.

Если включить формат строки левого дополнения {abi}{versionCode:0000}, значением будет 50044, так как слева к versionCode будет добавлен 0. Кроме того, можно использовать десятичное заполнение, например ,{abi}{versionCode:D4} то же самое, что и в предыдущем примере.

Поддерживаются только строки формата дополнения "0" и "Dx", потому что значение ДОЛЖНО быть целым числом.

Предварительно определенные ключевые элементы

  • abi — вставляет целевой abi для приложения

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK — вставляет минимальное поддерживаемое значение пакета SDK из 11 AndroidManifest.xml или если он не определен.

  • versionCode — использует код версии непосредственно из Properties\AndroidManifest.xml.

Можно определить настраиваемые элементы с помощью свойства $(AndroidVersionCodeProperties) (определение приводится ниже).

По умолчанию будет указано значение {abi}{versionCode:D6}. Если разработчик хочет сохранить предыдущее поведение, можно переопределить значение по умолчанию, задав для свойства $(AndroidUseLegacyVersionCode) значение true

AndroidVersionCodeProperties

Строковое свойство, позволяющее разработчику определять пользовательские элементы для использования с $(AndroidVersionCodePattern)ним. Они находятся в форме пары key=value. Все элементы в value должны быть целыми числами. Например: screen=23;target=$(_AndroidApiLevel). Как видно, вы можете использовать существующие или пользовательские свойства MSBuild в строке.

ApplicationId

Свойство MSBuild, которое можно использовать в качестве альтернативы /manifest/@package в AndroidManifest.xml файле. Чтобы включить эту функцию, необходимо также включить <GenerateApplicationManifest>true</GenerateApplicationManifest>. Это будет по умолчанию в .NET 6.

Дополнительные сведения о требованиях /manifest/@packageсм. в документации по Android.

ApplicationTitle

Свойство MSBuild, которое можно использовать в качестве альтернативы /manifest/application/@android:label в AndroidManifest.xml файле. Чтобы включить эту функцию, необходимо также включить <GenerateApplicationManifest>true</GenerateApplicationManifest>. Это будет по умолчанию в .NET 6.

Дополнительные сведения о требованиях /manifest/application/@android:labelсм. в документации по Android.

ApplicationVersion

Свойство MSBuild, которое можно использовать в качестве альтернативы /manifest/@android:versionName в AndroidManifest.xml файле. Чтобы включить эту функцию, необходимо также включить <GenerateApplicationManifest>true</GenerateApplicationManifest>. Это будет по умолчанию в .NET 6.

Дополнительные сведения о требованиях /manifest/@android:versionNameсм. в документации по Android.

AotAssemblies

Логическое свойство, определяющее, будут ли сборки скомпилированы в машинный код и включены в приложения. По умолчанию это свойство имеет значение False.

Не рекомендуется использовать в .NET 7. Вместо этого перейдите к новому $(RunAOTCompilation) свойству MSBuild, так как поддержка $(AotAssemblies) будет удалена в будущем выпуске.

AProfUtilExtraOptions

Дополнительные параметры, которые следует передать в aprofutil.

BeforeBuildAndroidAssetPacks

Целевые объекты MSBuild, перечисленные в этом свойстве AssetPack , будут выполняться непосредственно перед созданием элементов.

Добавлено в .NET 9

BeforeGenerateAndroidManifest

Целевые объекты MSBuild, перечисленные в этом свойстве, будут запускаться непосредственно перед _GenerateJavaStubs.

Настройка

Указывает конфигурацию сборки, например "отладка" или "выпуск". Свойство Configuration используется для определения значений по умолчанию для других свойств, которые определяют поведение целевого объекта. В вашей среде IDE можно создать дополнительные конфигурации.

По умолчанию конфигурация приведет к тому, Debug что Install и SignAndroidPackage предназначен для создания меньшего пакета Android, который требует наличия других файлов и пакетов для работы.

Конфигурация по умолчанию Release приведет к Install и SignAndroidPackage предназначен для создания пакета Android, который является автономным и может использоваться без установки других пакетов или файлов.

DebugSymbols

Логическое значение, определяющее, является ли пакет Android отлаживаемым в сочетании со свойством $(DebugType) . Отладочный пакет содержит отладочные символы, задает //application/@android:debuggable атрибут trueи автоматически добавляет INTERNET разрешение, чтобы отладчик смог присоединиться к процессу. Приложение отлаживается, если DebugSymbols имеет значение True, аDebugType является пустой строкой или имеет значение Full.

DebugType

Определяет тип отладочных символов, которые следует создать как часть сборки, что также влияет на возможность отладки приложения. Возможные значения включают:

  • Full: создаются все символы. Если свойство DebugSymbols Свойство MSBuild также Trueявляется отладчиком пакета приложения.

  • PdbOnly: создаются символы PDB. Пакет приложения не является отлаживаемым.

Если свойство DebugType не задано или является пустой строкой, тогда свойство DebugSymbols определяет, является ли это приложение отлаживаемым.

EmbedAssembliesIntoApk

Логическое свойство, которое определяет, следует ли внедрять сборки приложения в пакет приложения.

Это свойство должно иметь значение True для сборок выпуска и False для сборок отладки. В сборках отладки значение Trueможет понадобиться, если быстрое развертывание не поддерживается для целевого устройства.

Если это свойство имеет значение False, то $(AndroidFastDeploymentType) Свойство MSBuild также определяет, что будет внедрено в .apkприложение, что может повлиять на время развертывания и перестроения.

EnableLLVM

Логическое свойство, которое определяет, будет ли использована низкоуровневая виртуальная машина (LLVM) при компиляции Ahead-of-Time сборок в машинный код.

Чтобы создать проект, для которого включено это свойство, необходимо установить Android NDK.

По умолчанию это свойство имеет значение False.

Это свойство игнорируется, если только свойство MSBuild $(AotAssemblies) не имеет значение True.

EnableProguard

Логическое свойство, которое определяет, запускается ли ProGuard в рамках процесса упаковки для связывания кода Java.

По умолчанию это свойство имеет значение False.

Если установлено значение True, файлы @(ProguardConfiguration) будут использоваться для управления выполнением proguard.

GenerateApplicationManifest

Включает или отключает следующие свойства MSBuild, которые выдают значения в окончательном AndroidManifest.xml файле:

Значение $(GenerateApplicationManifest) по умолчанию — true.

JavaMaximumHeapSize

Указывает значение параметра java-Xmx для использования при сборке файла .dex в процессе упаковки. Если он не указан, то параметр -Xmx задает для java значение 1G. Это часто будет требоваться в Windows по сравнению с другими платформами.

Это свойство требуется указывать, если целевой объект _CompileDex вызывает ошибку java.lang.OutOfMemoryError.

Настройка значения путем изменения:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

Задает параметры командной строки для передачи в Java при создании .dex файла.

JarsignerTimestampAuthorityCertificateAlias

Это свойство позволяет указать псевдоним в хранилище ключей в качестве источника для меток времени. Дополнительные сведения см. в документации по Java, посвященной поддержке меток времени для сигнатур.

<PropertyGroup>
    <JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>

JarsignerTimestampAuthorityUrl

Это свойство позволяет указать URL-адрес службы в качестве источника для меток времени. Так вы сможете гарантировать, что сигнатура .apk содержит метку времени. Дополнительные сведения см. в документации по Java, посвященной поддержке меток времени для сигнатур.

<PropertyGroup>
    <JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>

LinkerDumpDependencies

Логическое свойство, позволяющее создавать файл зависимостей компоновщика. Этот файл может использоваться в качестве входных данных для средства illinkanalyzer.

Файл зависимостей с именем linker-dependencies.xml.gz записывается в каталог проекта. В .NET5/6 он записывается рядом со связанными сборками в каталоге obj/<Configuration>/android<ABI>/linked.

Значение по умолчанию равно False.

MandroidI18n

Указывает поддержку интернационализации в приложении, например параметры сортировки и таблицы сортировки. Значение представляет собой список, разделенный запятой или точкой с запятой, из одного или нескольких следующих значений, не учитывающих регистр:

  • None: не включать дополнительные кодировки.

  • All: включить все доступные кодировки.

  • CJK: включают китайские, японские и корейские кодировки, такие как японский (EUC) [enc-jp, CP51932], японский (SHIFT-JIS) [iso-2022-jp, shift_jis, CP932], японский (JIS) [CP50220], Китайский упрощенный (GB2312) [gb2312, CP936], корейский (UHC) [ks_c_5601-1987, CP949], корейский (EUC) [euc-kr, CP51949], китайский традиционный (Big5) [big5, CP950], и китайский упрощенный (GB18030) [GB18030, CP54936].

  • MidEast: включение кодировки Ближнего Востока, такие как турецкий (Windows) [iso-8859-9, CP1254], иврит (Windows) [windows-1255, CP1255], арабский (Windows) [windows-1256, CP1256], арабский (ISO) [iso-8859-6, CP28596], иврит (ISO) [iso-8859-8, CP28598], латинская 5 (ISO) [iso-8859-9, CP28599], и иврит (iso-8859-8, CP38598].

  • Другие: включите другие кодировки, такие как кириллица (Windows) [CP1251], Балтия (Windows) [iso-8859-4, CP1257], вьетнамские (Windows) [CP1258], кириллица (KOI8-R) [koi8-r, CP1251], украинский (KOI8-U) [koi8-u, CP1251], Балтия (ISO) [iso-8859-4, CP1257], кириллица (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or; CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Малаялам [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011], и тайский (Windows) [CP874].

  • Редкие: включают редкие кодировки, такие как IBM EBCDIC (турецкий) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (США-Канада с евро) [CP1140], IBM EBCDIC (Германия с евро) [CP1141], IBM EBCDIC (Дания/Норвегия с евро) [CP1142], IBM EBCDIC (Финляндия и Швеция с евро) [CP1143], IBM EBCDIC (Италия с евро) [CP1144], IBM EBCDIC (Латинская Америка/Испания с евро) [CP1145], IBM EBCDIC (Соединенное Королевство с евро) [CP1146], IBM EBCDIC (Франция с евро) [CP1147], IBM EBCDIC (International with Euro) [CP1148], IBM EBCDIC (Исландия с Евро) [CP1149], IBM EBCDIC (Германия) [CP20273], IBM EBCDIC (Дания/Норвегия) [CP20277], IBM EBCDIC (Финляндия/Швеция) [CP20278], IBM EBCDIC (Италия) [CP20280], IBM EBCDIC (Латинская Америка/Испания) [CP20284], IBM EBCDIC (Соединенное Королевство) [CP20285], IBM EBCDIC (японский Katakana Extended) [CP20290], IBM EBCDIC (Франция) [CP20297], IBM EBCDIC (арабский) [CP20420], IBM EBCDIC (иврит) [CP20424], IBM EBCDIC (Исландия) [CP20871], IBM EBCDIC (кириллический - сербский, болгарский) [CP21025], IBM EBCDIC (США-Канада) [CP37], IBM EBCDIC (International) [CP500], арабский (ASMO 708) [CP708], Центральная европа (DOS) [CP852], кириллица (DOS) [CP855], Турецкий (DOS) [CP857], западный (DOS с евро) [CP858], иврит (DOS) [CP862], арабский (DOS) [CP864], русский (DOS) [CP866], греческий (DOS) [CP869], IBM EBCDIC (латинская 2) [CP870], и IBM EBCDIC (греческий) [CP875].

  • Запад: включите западные кодировки, такие как Западная Европа (Mac) [macintosh, CP10000], Исландия (Mac) [x-mac-исландия, CP10079], Центральная Европа (Windows) [iso-8859-2, CP1250], Западная Европа (Windows) [iso-8859-1, CP1252], греческий (Windows) [iso-8859-7, CP1253], центрально-европейский (ISO) [iso-8859-2, CP28592], латинская 3 (ISO) [iso-8859-3, CP28593], греческий (ISO) [iso-8859-7, CP28597], латинская 9 (ISO) [iso-8859-15, CP28605], OEM США [CP437], Западная Европа (DOS) [CP850], португальский (DOS) [CP860], Исландия (DOS) [CP861], французский канадский (DOS) [CP863], а также Скандинавская (DOS) [CP865].

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

Указывает префикс пути, который удаляется в начале имен файлов с помощью действия сборки AndroidResource. Это позволяет изменять расположение ресурсов.

Значение по умолчанию — Resources. Установите значение res для структуры проекта Java.

MonoSymbolArchive

Логическое свойство, которое определяет, создаются ли .mSYM артефакты для последующего использования для mono-symbolicateизвлечения "реального" имени файла и сведений о номере строки из трассировок стека выпуска.

Значение True по умолчанию для приложений "Выпуск", в которых включены символы отладки: $(EmbedAssembliesIntoApk) true, $(DebugSymbols) имеет значение True и $(Optimize) значение True.

RunAOTCompilation

Логическое свойство, определяющее, будут ли сборки скомпилированы в машинный код и включены в приложения. Это свойство по умолчанию для False Debug сборок и True по умолчанию для Release сборок.

Это свойство MSBuild заменяет $(AotAssemblies) свойство MSBuild из Xamarin.Android. Это то же свойство, используемое для Blazor WASM.