Поделиться через


Ошибка .NET для Android 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.

Проблема

Проблема заключается в том, что оба MonoAndroidAssetPrefix и MonoAndroidResourcePrefix предполагается быть относительными путями к каталогу. Эта информация используется для удаления сведений о корневом каталоге из файла или ресурса во время упаковки приложения. Возникает ошибка, так как свойство содержит полный путь.

Например, рассмотрим следующую структуру:

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

В конечном итоге .apk мы ожидаем, что файлы Foo.txt и Bar.txt будут помещены в папку assets . Чтобы сделать это правильно, системе сборки необходимо знать имя папки, в которой находятся ресурсы. По умолчанию это "Ресурсы", но другие имена папок также поддерживаются.

В приведенном выше примере предполагается, что пользователь присвоит MonoAndroidAssetPrefix значение MyAssets. Это обеспечит удаление части "MyAssets" из пути к "Foo.txt" и т. д. во время упаковки. Если MonoAndroidAssetPrefix задано значение /Users/xxx/Foo/MyAssets или c:\Users\xxx\Foo\MyAssets вы увидите это сообщение об ошибке.

Решение

Исправление этого заключается в том, чтобы не использовать полный путь для значений MonoAndroidAssetPrefix или MonoAndroidResourcePrefix. Это должны быть относительные пути к каталогам, которые соответствуют путям к папкам, в которых хранятся ресурсы.