Android için .NET hatası XA1041

Örnek iletiler

error XA1041: The MSBuild property 'MonoAndroidAssetPrefix' has an invalid value of 'c:\Foo\Assets'. The value is expected to be a directory path representing the relative location of your Assets or Resources.
error XA1041: The MSBuild property 'MonoAndroidResourcePrefix' has an invalid value of 'c:\Foo\Resources'. The value is expected to be a directory path representing the relative location of your Assets or Resources.

Sorun

Oradaki sorun, hem MonoAndroidResourcePrefix hem de MonoAndroidAssetPrefix öğelerinin göreli dizin yolları olmasının beklenmesidir. Bu bilgiler, uygulamayı paketlediğimizde kök dizin bilgilerini varlıktan veya kaynaktan "silmek" için kullanılır. Özelliği tam yol içerdiğinden hata oluşur.

Örneğin aşağıdaki yapıyı göz önünde bulundurun.

Foo.csproj
MyAssets/
    Foo.txt
    Subfolder/
        Bar.txt
MainActivity.cs

Son aşamada .apk dosyaların Foo.txt ve Bar.txt klasörüne assets koyulmasını bekliyoruz. Bunu doğru yapmak için derleme sisteminin varlıkların bulunduğu klasörün adını bilmesi name gerekir. Varsayılan olarak bu "Varlıklar"dır, ancak diğer klasör adını da desteklememiz gerekir.

Yukarıdaki örnekte, kullanıcının MonoAndroidAssetPrefix değerini "MyAssets" olarak ayarlamasını bekleriz. Bu, "Foo.txt" vb. yolunun "MyAssets" bölümünün paketleme sırasında kaldırılmasını sağlar. MonoAndroidAssetPrefix, /Users/xxx/Foo/MyAssets veya c:\Users\xxx\Foo\MyAssets olarak ayarlandıysa bu hata iletisini görürsünüz.

Çözüm

Bunun için çözüm, MonoAndroidAssetPrefix veya MonoAndroidResourcePrefix değerleri için tam yol kullanmamaktır. Varlıklarınızın depolandığı klasör yolu ile eşleşen göreli bir dizin yolu olmalıdır.