次の方法で共有


Android 用 .NET エラー XA1041

メッセージの例

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.

問題点

問題は、 MonoAndroidAssetPrefixMonoAndroidResourcePrefix の両方が相対ディレクトリ パスである必要があるということです。 この情報は、アプリをパッケージ化するときに、ルート ディレクトリ情報を資産またはリソースから "削除" するために使用されます。 プロパティに完全なパスが含まれているため、エラーが発生します。

たとえば、次の構造を考えてみましょう。

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

最終的に.apkでは、Foo.txtBar.txtのファイルがassetsフォルダーに配置されることを期待しています。 これを正しく行うには、ビルド システムが資産が配置されているフォルダーの名前を認識している必要があります。 既定ではこれは "Assets" ですが、他のフォルダー名もサポートされています。

上記の例では、ユーザーが MonoAndroidAssetPrefix を "MyAssets" の値に設定することを想定しています。 これにより、パッケージ化中に"Foo.txt" などのパスの "MyAssets" 部分が削除されます。 MonoAndroidAssetPrefix/Users/xxx/Foo/MyAssetsまたはc:\Users\xxx\Foo\MyAssetsに設定されている場合は、このエラー メッセージが表示されます。

ソリューション

この問題を解決するには、 MonoAndroidAssetPrefix または MonoAndroidResourcePrefixの値に完全なパスを使用しないようにします。 これらは、アセットが格納されているフォルダー パスと一致する相対ディレクトリ パスである必要があります。