Erro do .NET para Android XA1041

Mensagens de exemplo

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.

Questão

O problema aí é que tanto o MonoAndroidAssetPrefix quanto o MonoAndroidResourcePrefix devem ser caminhos de diretório relativos. Essas informações são usadas para "retirar" as informações do diretório raiz (pasta principal) do ativo ou do recurso quando empacotamos o aplicativo. O erro ocorre porque a propriedade contém um caminho completo.

Por exemplo, considere a estrutura a seguir.

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

No .apk final, esperamos que os arquivos Foo.txt e Bar.txt sejam colocados na pastaassets. Para fazer isso corretamente, o sistema de build precisa saber a name pasta na qual os ativos estão localizados. Por padrão, isso é "Ativos", mas também devemos dar suporte a outro nome de pasta.

No exemplo acima, esperamos que o usuário defina como MonoAndroidAssetPrefix um valor de "MyAssets". Isso garantiria que a parte "MyAssets" do caminho para "Foo.txt", etc., seja removida durante o empacotamento. Se o MonoAndroidAssetPrefix estiver definido como /Users/xxx/Foo/MyAssets ou c:\Users\xxx\Foo\MyAssets, você verá esta mensagem de erro.

Solução

A correção para isso é não usar um caminho completo para os valores de MonoAndroidAssetPrefix ou MonoAndroidResourcePrefix. Eles devem ser um caminho de diretório relativo que corresponda ao caminho da pasta no qual seus ativos são armazenados.