Delen via


.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 naar verwachting een relatief mappad zouden 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 doen, moet het buildsysteem de naam weten van de map waarin de assets zich bevinden. Dit is standaard Assets, maar andere mapnamen worden ook ondersteund.

In het bovenstaande voorbeeld verwachten we dat de gebruiker MonoAndroidAssetPrefix instelt op een waarde van 'MyAssets'. Dit zou ervoor zorgen dat het deel "MyAssets" van het pad naar "Foo.txt" enz. wordt verwijderd tijdens de verpakking. Wanneer MonoAndroidAssetPrefix is ingesteld op /Users/xxx/Foo/MyAssets of c:\Users\xxx\Foo\MyAssets, zie je dit foutbericht.

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.