Erreur .NET pour Android XA1041

Exemples de messages

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ème

Le problème est que les deux MonoAndroidAssetPrefix et MonoAndroidResourcePrefix sont censés être un chemin d’accès de répertoire relatif. Ces informations sont utilisées pour retirer les informations du répertoire racine de l’actif ou de la ressource lorsque nous empaquetons l’application. L’erreur se produit car la propriété contient un chemin d’accès complet.

Par exemple, considérez la structure suivante :

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

Dans le dernier .apk, nous nous attendons à ce que les fichiers Foo.txt et Bar.txt soient placés dans le dossier assets. Pour ce faire correctement, le système de génération doit connaître le nom du dossier dans lequel se trouvent les ressources. Par défaut, il s’agit de « Assets », mais d’autres noms de dossiers sont également pris en charge.

Dans l’exemple ci-dessus, nous nous attendons à ce que l’utilisateur définisse MonoAndroidAssetPrefix sur la valeur « MyAssets ». Cela garantirait que la partie « MyAssets » du chemin d’accès à «Foo.txt» etc est supprimée pendant l’emballage. Si MonoAndroidAssetPrefix est défini sur /Users/xxx/Foo/MyAssets ou c:\Users\xxx\Foo\MyAssets, vous verrez ce message d'erreur.

Solution

Le correctif pour cela consiste à ne pas utiliser un chemin d’accès complet pour les valeurs de MonoAndroidAssetPrefix ou MonoAndroidResourcePrefix. Il doit s’agir d’un chemin d’accès de répertoire relatif qui correspond au chemin d’accès au dossier dans lequel vos ressources sont stockées.