メッセージの例
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.
問題点
問題は、 MonoAndroidAssetPrefix と MonoAndroidResourcePrefix の両方が相対ディレクトリ パスである必要があるということです。 この情報は、アプリをパッケージ化するときに、ルート ディレクトリ情報を資産またはリソースから "削除" するために使用されます。
プロパティに完全なパスが含まれているため、エラーが発生します。
たとえば、次の構造を考えてみましょう。
Foo.csproj
MyAssets/
Foo.txt
Subfolder/
Bar.txt
MainActivity.cs
最終的に.apkでは、Foo.txtとBar.txtのファイルがassetsフォルダーに配置されることを期待しています。 これを正しく行うには、ビルド システムが資産が配置されているフォルダーの名前を認識している必要があります。 既定ではこれは "Assets" ですが、他のフォルダー名もサポートされています。
上記の例では、ユーザーが MonoAndroidAssetPrefix を "MyAssets" の値に設定することを想定しています。 これにより、パッケージ化中に"Foo.txt" などのパスの "MyAssets" 部分が削除されます。
MonoAndroidAssetPrefixが/Users/xxx/Foo/MyAssetsまたはc:\Users\xxx\Foo\MyAssetsに設定されている場合は、このエラー メッセージが表示されます。
ソリューション
この問題を解決するには、 MonoAndroidAssetPrefix または MonoAndroidResourcePrefixの値に完全なパスを使用しないようにします。 これらは、アセットが格納されているフォルダー パスと一致する相対ディレクトリ パスである必要があります。