Errore .NET per Android XA1041

Messaggi di esempio

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

Il problema è che sia MonoAndroidAssetPrefix sia MonoAndroidResourcePrefix devono essere percorsi di directory relativi. Queste informazioni vengono usate per eliminare le informazioni della directory radice dall'asset o dalla risorsa durante l'impacchettamento dell'app. L'errore viene generato perché la proprietà contiene un percorso completo.

Si consideri ad esempio la struttura seguente.

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

Nella finale .apk ci aspettiamo che i file Foo.txt e Bar.txt vengano inseriti nella assets cartella . Per eseguire questa operazione correttamente, il sistema di compilazione deve conoscere la name cartella in cui si trovano gli asset. Per impostazione predefinita, si tratta di "Assets", ma è necessario supportare anche altri nomi di cartella.

Nell'esempio precedente ci aspetteremmo che l'utente imposti il valore MonoAndroidAssetPrefix su "MyAssets". In questo modo si garantisce che la parte "MyAssets" del percorso a "Foo.txt" e così via venga rimossa durante la creazione del pacchetto. Se l'oggetto MonoAndroidAssetPrefix è impostato su /Users/xxx/Foo/MyAssets o c:\Users\xxx\Foo\MyAssets verrà visualizzato questo messaggio di errore.

Soluzione

La correzione per questa operazione non prevede l'uso di un percorso completo per i valori di MonoAndroidAssetPrefix o MonoAndroidResourcePrefix. Devono essere un percorso di directory relativo che corrisponde al percorso della cartella in cui vengono archiviati gli asset.