.NET for Android XA1041-hiba

Példaüzenetek

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.

Probléma

A probléma az, hogy mindkettő MonoAndroidAssetPrefix , és MonoAndroidResourcePrefix várhatóan relatív könyvtár elérési útja lesz. Ezek az információk arra szolgálnak, hogy az alkalmazás csomagolásakor "eltávolítsuk" a gyökérkönyvtár adatait az eszközről vagy az erőforrásról. A hiba azért jelenik meg, mert a tulajdonság teljes elérési utat tartalmaz.

Vegyük például a következő struktúrát:

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

A végleges .apk esetén a fájlok Foo.txt és Bar.txt a assets mappába kerülnek. Ennek helyes elvégzéséhez a buildelési rendszernek ismernie kell annak a mappának a nevét, amelyben az eszközök találhatók. Alapértelmezés szerint ez "Eszközök", de más mappanevek is támogatottak.

A fenti példában arra számítunk, hogy a felhasználó a MonoAndroidAssetPrefix értékét "MyAssets"-re állítja be. Ez biztosítaná, hogy a "Foo.txt" stb. fájlok útvonalában található "MyAssets" rész el legyen távolítva a csomagolás során. Ha MonoAndroidAssetPrefix be van állítva, /Users/xxx/Foo/MyAssets vagy c:\Users\xxx\Foo\MyAssets megjelenik ez a hibaüzenet.

Megoldás

Ennek javítása az, hogy nem használ teljes elérési utat az értékekhez MonoAndroidAssetPrefix vagy MonoAndroidResourcePrefixa . Ezek relatív könyvtár elérési útjának kell lenniük, amely megegyezik az eszközök tárolásának mappaútvonalával.