Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ek ön ek ve büyük harf farkları gibi sorunlar nedeniyle Java paket adları genellikle C# ad alanı kurallarıyla eşleşmez.
Örneğin, bağlama işlemi ad alanlarını Pascal Case'e otomatik olarak çevirdiğinden, Java paketi adı com.microsoft.streamwriters otomatik olarak Com.Microsoft.Streamwriters olarak çevrilecektir. Ancak daha iyi bir uyum olacaktır Microsoft.StreamWriters.
Bu, proje dosyasına bir <AndroidNamespaceReplacement> öğe eklenerek gerçekleştirilebilir:
<ItemGroup>
<AndroidNamespaceReplacement Include='com.microsoft.streamwriters' Replacement='Microsoft.StreamWriters' />
</ItemGroup>
Java paketleri geleneksel metadatakullanılarak da yeniden adlandırılsa da, birçok benzer paketi yeniden adlandırmak yorucu olabilir:
<attr path="/api/package[@name='com.microsoft.accessibility']" name="managedName">Microsoft.Accessibility</attr>
<attr path="/api/package[@name='com.microsoft.content']" name="managedName">Microsoft.Content</attr>
<attr path="/api/package[@name='com.microsoft.core']" name="managedName">Microsoft.Core</attr>
...
ile <AndroidNamespaceReplacement>, proje dosyasına yerleştirilen aynı MSBuild dönüşümü eşleşen tüm paketlere uygulanabilir:
<ItemGroup>
<AndroidNamespaceReplacement Include='com.microsoft' Replacement='Microsoft' />
</ItemGroup>
Specification
Bu değiştirmeler yalnızca bir metadata@managedName öznitelik belirtmeyen <package> öğeler için çalıştırılır.
@managedName kullanılırsa, tam olarak istenen adı sağlamış olursunuz ve bu isim üzerinde daha fazla işlem yapılmaz.
Kullanılmayan meta verilerin aksine, bu değiştirme kullanılmamışsa uyarı vermez.
Büyük/küçük harf duyarlılığı
Değiştirmeler otomatik Pascal büyük/küçük harf dönüşümünden sonra çalıştırılır, ancak karşılaştırma büyük/küçük harfe duyarlı değildir.
Bu nedenle, aşağıdakilerin her ikisi de eşdeğerdir:
<AndroidNamespaceReplacement Include='Androidx' Replacement='AndroidX' />
<AndroidNamespaceReplacement Include='androidx' Replacement='AndroidX' />
Sözcük sınırları
Değiştirmeler yalnızca tam sözcüklerde (ad alanı bölümleri) gerçekleşir.
Bu nedenle
<AndroidNamespaceReplacement Include='Com' Replacement='' />
Com.Google.Library ile eşleşir, ancak Common.Google.Library veya Google.Imaging.Dicom ile eşleşmez.
Birden çok tam sözcük kullanılabilir:
<AndroidNamespaceReplacement Include='Com.Google' Replacement='Google' />
<AndroidNamespaceReplacement Include='Com.Androidx' Replacement='Microsoft.AndroidX' />
Sözcük konumu
Sözcük bölümü eşleşmesi, ad alanının başına veya sonuna sırasıyla bir . eklenerek veya önceden bağlanarak .kısıtlanabilir.
<AndroidNamespaceReplacement Include='Androidx.' Replacement='Microsoft.AndroidX' />
Androidx.Core ile eşleşir, ancak Square.OkHttp.Androidx ile eşleşmez.
Benzer şekilde,
<AndroidNamespaceReplacement Include='.Compose' Replacement='ComposeUI' />
Google.AndroidX.Compose ile eşleşir, ancak Google.Compose.Writer ile eşleşmez.
Hem önüne ekleme hem de sona ekleme bir . tam olarak eşleşmesini sağlar.
<AndroidNamespaceReplacement Include='.Androidx.' Replacement='Microsoft.AndroidX' />
Androidx ile eşleşir, ancak Google.Androidx.Core ile eşleşmez.
Değiştirme siparişi
Değiştirmeler <ItemGroup> tarafından belirtilen sırada çalıştırılır, ancak bu gruba yeni bir şey farklı zamanlarda eklenirse istenmeyen bir sıraya yol açabilir.
Değiştirmeler sıralı olarak çalıştırılır ve birden çok değiştirme tek bir ad alanını etkileyebilir.
<AndroidNamespaceReplacement Include='Androidx' Replacement='Microsoft.AndroidX' />
<AndroidNamespaceReplacement Include='View' Replacement='Views' />
Androidx.View öğesini Microsoft.AndroidX.Views öğesine değiştir.
Meta verilerle ilişki
Teknik olarak @(AndroidNamespaceReplacement), <metadata> özel bir durum olarak uygulanır ve doğrudan metadata.xml dosyası içine yerleştirilebilir.
isterseniz bir meta veri formu.
Yani, MSBuild öğesi:
<ItemGroup>
<AndroidNamespaceReplacement Include='com.microsoft' Replacement='Microsoft' />
</ItemGroup>
metadata.xml konumuna şu şekilde yerleştirilebilir:
<metadata>
<ns-replace source='com.microsoft' replacement='Microsoft' />
</metadata>