Freigeben über


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 besteht darin, dass sowohl MonoAndroidAssetPrefix als auch MonoAndroidResourcePrefix als relative Verzeichnispfade erwartet werden. Diese Informationen werden verwendet, um die Stammverzeichnisinformationen vom Asset 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

Abschließend erwarten wir, dass die Dateien Foo.txt und Bar.txt in den assets Ordner abgelegt werden. Um dies ordnungsgemäß zu tun, muss das Buildsystem den Namen des Ordners kennen, in dem sich die Objekte befinden. Standardmäßig ist dies "Assets", aber auch andere Ordnernamen werden unterstützt.

Im obigen Beispiel erwarten wir, dass der Benutzer MonoAndroidAssetPrefix auf den Wert "MyAssets" setzt. Dies stellt sicher, dass der Teil "MyAssets" des Pfads zu "Foo.txt" usw. während der Paketierung entfernt wird. Wenn MonoAndroidAssetPrefix auf /Users/xxx/Foo/MyAssets oder c:\Users\xxx\Foo\MyAssets gesetzt ist, sehen Sie diese Fehlermeldung.

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.