.NET voor Android-fout XA1041

Voorbeeldberichten

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.

Issue

Het probleem is dat zowel MonoAndroidAssetPrefix als MonoAndroidResourcePrefix relatieve mappaden moeten zijn. Deze informatie wordt gebruikt om de hoofdmapgegevens van de asset of resource te verwijderen wanneer we de app verpakken. De fout wordt gegenereerd omdat de eigenschap een volledig pad bevat.

Denk bijvoorbeeld aan de volgende structuur.

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

In de laatste .apk-fase verwachten we dat de bestanden Foo.txt en Bar.txt in de assets-map geplaatst worden. Om dit correct te kunnen doen, moet het buildsysteem weten in welke name map de assets zich bevinden. Dit is standaard Assets, maar we moeten ook andere mapnamen ondersteunen.

In het bovenstaande voorbeeld verwachten we dat de gebruiker de MonoAndroidAssetPrefix instelt op de waarde 'MyAssets'. Dit zou ervoor zorgen dat het deel "MyAssets" van het pad naar "Foo.txt" enz. wordt verwijderd tijdens de verpakking. Als MonoAndroidAssetPrefix is ingesteld op /Users/xxx/Foo/MyAssets of c:\Users\xxx\Foo\MyAssets, ziet u deze foutmelding.

Solution

De oplossing hiervoor is om geen volledig pad te gebruiken voor de waarden van MonoAndroidAssetPrefix of MonoAndroidResourcePrefix. Ze moeten een relatief directorypad zijn dat identiek is aan het directorypad waarin uw assets worden opgeslagen.