通过


适用于 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文件夹中。 为了正确执行此操作,生成系统需要知道资产所在的文件夹的名称。 默认情况下,这是“资产”,但也支持其他文件夹名称。

在上面的示例中,我们期望用户将 MonoAndroidAssetPrefix 设置为 "MyAssets" 的值。 这将确保在打包过程中删除“Foo.txt”等路径的“MyAssets”部分。 如果 MonoAndroidAssetPrefix 设置为 /Users/xxx/Foo/MyAssetsc:\Users\xxx\Foo\MyAssets 会看到此错误消息。

解决方案

解决方法是对MonoAndroidAssetPrefixMonoAndroidResourcePrefix的值不要使用完整路径。 它们应该是与存储资产的文件夹路径匹配的相对目录路径。