Błąd platformy .NET dla systemu Android XA1041

Przykładowe komunikaty

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.

Problematyka

Problem polega na tym, że zarówno MonoAndroidAssetPrefix, jak i MonoAndroidResourcePrefix powinny być względnymi ścieżkami katalogów. Ta informacja jest używana do "usuwania" informacji o katalogu głównym z zasobu lub materiału podczas pakowania aplikacji. Występuje błąd, ponieważ właściwość zawiera pełną ścieżkę.

Rozważmy na przykład następującą strukturę.

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

W końcowej wersji .apk oczekujemy, że pliki Foo.txt i Bar.txt będą umieszczone w folderze assets. Aby zrobić to poprawnie, system kompilacji musi znać name folderu, w którym znajdują się zasoby. Domyślnie jest to "Zasoby", ale powinniśmy również obsługiwać inną nazwę folderu.

W powyższym przykładzie spodziewamy się, że użytkownik ustawi MonoAndroidAssetPrefix wartość na wartość "Moje zasoby". To zapewni, że podczas tworzenia pakietów zostanie usunięta część ścieżki "MyAssets" do "Foo.txt" itp. Jeśli parametr MonoAndroidAssetPrefix jest ustawiony na /Users/xxx/Foo/MyAssets lub c:\Users\xxx\Foo\MyAssets zostanie wyświetlony ten komunikat o błędzie.

Rozwiązanie

Poprawka tego problemu polega na tym, że nie należy używać pełnej ścieżki dla wartości MonoAndroidAssetPrefix lub MonoAndroidResourcePrefix. Powinny one być względną ścieżką katalogu zgodną ze ścieżką folderu, w której są przechowywane zasoby.