Sdílet prostřednictvím


Chyba .NET pro Android XA1041

Ukázkové zprávy

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ém

Problémem je, že se očekává, že jak MonoAndroidAssetPrefix, tak MonoAndroidResourcePrefix jsou relativní cesty k adresáři. Tyto informace se používají k "odstranění" informací o kořenovém adresáři z prostředku při balení aplikace. Chyba je vyvolána, protože vlastnost obsahuje úplnou cestu.

Představte si například následující strukturu:

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

V závěru .apk očekáváme, že Foo.txt a Bar.txt budou umístěny do složky assets. Aby to bylo možné provést správně, musí systém sestavení znát název složky, ve které jsou umístěné prostředky. Ve výchozím nastavení se nazývá "Assets", ale podporují se i jiné názvy složek.

V předchozím příkladu bychom očekávali, že uživatel nastaví MonoAndroidAssetPrefix na hodnotu "MyAssets". Tím zajistíte, že se během balení odstraní část cesty "MyAssets" k "Foo.txt" a podobně. Pokud je MonoAndroidAssetPrefix nastaveno na /Users/xxx/Foo/MyAssets nebo c:\Users\xxx\Foo\MyAssets, zobrazí se tato chybová zpráva.

Řešení

Oprava tohoto problému spočívá v nepoužití úplné cesty pro hodnoty MonoAndroidAssetPrefix nebo MonoAndroidResourcePrefix. Měly by se jednat o relativní cestu k adresáři, která odpovídá cestě ke složce, ve které jsou vaše prostředky uložené.