Freigeben über


Binden von MSBuild-Eigenschaften für Projekte

Hinweis

In .NET für Android gibt es technisch keinen Unterschied zwischen einer Anwendung und einem Bindungsprojekt, sodass diese Eigenschaften in beiden funktionieren. In der Praxis wird dringend empfohlen, separate Anwendungs- und Bindungsprojekte zu erstellen. Buildeigenschaften, die in erster Linie in Anwendungsprojekten verwendet werden, werden im Referenzhandbuch für MSBuild-Eigenschaften dokumentiert.

Build-Eigenschaften

Eigenschaft Voreinstellung Beschreibung
AndroidBoundInterfacesContainConstants true Eine boolesche Eigenschaft, die angibt, ob Bindungskonstanten für Schnittstellen unterstützt werden oder ob die Legacy-Problemumgehung zum Erstellen einer IMyInterfaceConsts-Klasse verwendet wird.

Dokumentation
AndroidBoundInterfacesContainStatic
AndDefaultInterfaceMethods
true Eine boolesche Eigenschaft, die angibt, ob Standard- und statische Member in Schnittstellen unterstützt werden oder ob die herkömmliche Problemumgehung zum Erstellen einer gleichgeordneten Klasse, die statische Member wie abstract class MyInterface enthält, verwendet wird.

Dokumentation
AndroidBoundInterfacesContainTypes true Eine boolesche Eigenschaft, die angibt, ob typen, die in Schnittstellen geschachtelt sind, unterstützt werden, oder die legacy-Problemumgehung zum Erstellen eines nicht geschachtelten Typs, der IMyInterfaceMyNestedClass verwendet wird.

Dokumentation
AndroidEnableObsoleteOverrideInheritance
Hinzugefügt in .NET 8
true Eine boolesche Eigenschaft, die angibt, ob gebundene Methoden, die Java-Methoden überschreiben@Deprecated, automatisch als @Deprecated gekennzeichnet werden.

Dokumentation
AndroidEnableRestrictToAttributes
Hinzugefügt in .NET 8
obsolete Eine Enumerationseigenschaft mit den gültigen Werten obsolete und disable, die angibt, ob das .NET-Attribut [Obsolete] zur API hinzugefügt wird, die mit @RestrictTo in einer Java-Bibliothek markiert ist.

Dokumentation
AndroidJavadocVerbosity intellisense Eine Enumerationseigenschaft mit gültigen Werten intellisense und full, die angibt, wie ausführlich die C#-XML-Dokumentationskommentare beim Importieren der Javadoc-Dokumentation innerhalb von Bindungsprojekten mithilfe der @(JavaSourceJar) Build-Aktion sein sollen.

Dokumentation

AndroidBoundInterfacesContainConstants

Eine boolesche Eigenschaft, die angibt, ob Bindungskonstanten für Schnittstellen unterstützt werden oder ob die veraltete Problemlösung verwendet wird, eine IMyInterfaceConsts Klasse zu erstellen.

Der Standardwert ist true.

Dies wird nur empfohlen, wenn Sie versuchen, die Kompatibilität der öffentlichen API mit einer Legacybindungsbibliothek zu verwalten, die vor der Veröffentlichung von C# 8 erstellt wurde.

Weitere Informationen

Android-gebundene Schnittstellen enthalten statische und Standardmethoden in Schnittstellen

Eine boolesche Eigenschaft, die angibt, ob Standard- und statische Member auf Schnittstellen unterstützt werden oder ob die veraltete Problemumgehung verwendet wird, bei der eine gleichgeordnete Klasse mit statischen Mitgliedern wie abstract class MyInterface erstellt wird.

Der Standardwert ist true.

Dies wird nur empfohlen, wenn Sie versuchen, die Kompatibilität der öffentlichen API mit einer Legacybindungsbibliothek zu verwalten, die vor der Veröffentlichung von C# 8 erstellt wurde.

Weitere Informationen

AndroidBoundInterfacesContainTypes

Eine boolean-Eigenschaft, die spezifiziert, ob Typen, die in Schnittstellen geschachtelt sind, unterstützt werden, oder ob die Legacy-Problemumgehung zum Erstellen eines nicht geschachtelten Typs wie IMyInterfaceMyNestedClass verwendet werden soll.

Der Standardwert ist true.

Dies wird nur empfohlen, wenn Sie versuchen, die Kompatibilität der öffentlichen API mit einer Legacybindungsbibliothek zu verwalten, die vor der Veröffentlichung von C# 8 erstellt wurde.

Weitere Informationen

AndroidEnableRestrictToAttributes

Eine Eigenschaft im Enum-Stil mit den gültigen Werten obsolete und disable, die steuert, ob das .NET-Attribut [Obsolete] der gebundenen API hinzugefügt wird, das mit @RestrictTo in einer Java-Bibliothek gekennzeichnet ist.

Diese Eigenschaft ist auf obsolete standardmäßig festgelegt.

Bei Festlegung auf obsolete, werden Typen und Member, die mit der Java-Anmerkung androidx.annotation.RestrictTogekennzeichnet sind oder sich in nicht exportierten Java-Paketen befinden, mit einem [Obsolete] Attribut in der C#-Bindung gekennzeichnet.

Dieses [Obsolete] Attribut enthält eine beschreibende Meldung, in der erläutert wird, dass der Java-Paketbesitzer die API als "intern" betrachtet und warnt gegen die Verwendung.

Dieses Attribut verfügt auch über einen benutzerdefinierten Warnungscode XAOBS001 , sodass es unabhängig von der "normalen" veralteten API unterdrückt werden kann.

Bei Festlegung auf disable" wird die API ohne zusätzliche Attribute als normal generiert. (Dies ist das gleiche Verhalten wie vor .NET 8.)

Das Hinzufügen von [Obsolete] Attributen anstelle der automatischen Entfernung der API wurde durchgeführt, um die API-Kompatibilität mit vorhandenen Paketen beizubehalten. Wenn Sie stattdessen Elemente entfernen möchten, die über die @RestrictTo Anmerkung verfügen oder sich in nicht exportierten Java-Paketen befinden, können Sie zusätzlich zu dieser Eigenschaft Metadaten verwenden, um zu verhindern, dass diese Typen gebunden werden:

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

Unterstützung für diese Eigenschaft wurde in .NET 8 hinzugefügt.

AndroidEnableObsoleteOverrideInheritance

Eine boolesche Eigenschaft, die angibt, ob gebundene Methoden, die Java-Methoden überschreiben@Deprecated, automatisch als @Deprecated gekennzeichnet werden.

Es ist äußerst selten, diese Eigenschaft zu ändern.

Unterstützung für diese Eigenschaft wurde in .NET 8 hinzugefügt.

AndroidJavadocVerbosity

Eine Enumerationseigenschaft mit gültigen Werten intellisense und full, die angibt, wie ausführlich die C#-XML-Dokumentationskommentare beim Importieren der Javadoc-Dokumentation innerhalb von Bindungsprojekten mithilfe der @(JavaSourceJar) Build-Aktion sein sollen.

Diese Eigenschaft ist auf intellisense standardmäßig festgelegt.