Fehler in .NET für Android XA1041

Beispielnachrichten

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.

Thema

Das Problem dabei ist, dass sowohl MonoAndroidAssetPrefix als auch MonoAndroidResourcePrefix relative Verzeichnispfade sein müssen. Diese Informationen werden verwendet, um die Stammverzeichnisinformationen vom Objekt oder der Ressource zu entfernen, wenn die App verpackt wird. Der Fehler wird ausgelöst, da die Eigenschaft einen vollständigen Pfad enthält.

Betrachten Sie beispielsweise die folgende Struktur.

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

Wir erwarten, dass die Dateien Foo.txt und Bar.txt im abschließenden .apk im assets-Ordner abgelegt werden. Um dies ordnungsgemäß zu tun, muss das Buildsystem den name Ordner kennen, in dem sich die Objekte befinden. Standardmäßig ist dies "Assets", aber wir sollten auch anderen Ordnernamen unterstützen.

Im obigen Beispiel würden wir erwarten, dass der Benutzer für MonoAndroidAssetPrefix den Wert „MyAssets“ festlegt. Dies stellt sicher, dass der Teil „MyAssets“ des Pfads zu „Foo.txt“ usw. während der Paketierung entfernt wird. Wenn MonoAndroidAssetPrefix auf c:\Users\xxx\Foo\MyAssets oder /Users/xxx/Foo/MyAssets gesetzt ist, wird diese Fehlermeldung angezeigt.

Lösung

Die Lösung dazu besteht darin, keinen vollständigen Pfad für die Werte von MonoAndroidAssetPrefix oder MonoAndroidResourcePrefix zu verwenden. Sie sollten ein relativer Verzeichnispfad sein, der dem Ordnerpfad entspricht, in dem Ihre Objekte gespeichert sind.