2015-09-14 13 views
5

Ich habe eine neue Xamarin.Android App erstellt und ein paar Assets hinzugefügt. Diese Assets sind in mehreren Auflösungen verfügbar, also habe ich sie in ihre jeweiligen Ordner drawable-XXX im Ordner Resources platziert. Dies führte zu dem folgenden Fehler:Wie umgehen Visual Studio F # Projekt Ordner Einschränkungen auf Xamarin.Android?

Dies wird von F # 's schlechte Ordnerstruktur Handhabung verursacht. Normalerweise brauche ich in F # -Projekten überhaupt keine Ordner, aber in diesem speziellen Fall ist es notwendig, weil Android mit Ressourcen umgeht. Das Projekt wird in Xamarin Studio geladen, in Visual Studio jedoch nicht.

Das Projekt ist ziemlich groß, was bedeutet, dass ich (und andere Leute) müssen eine Menge Dateien hinzufügen, so dass manuelle Ansätze like this one sind nutzlos, denn sie sind zu zeitaufwendig.

Ich lese die official docs, aber es gibt nichts dort, das besagt, es gibt eine besondere Möglichkeit, mit dem Hinzufügen von Dateien auf VS oder eine andere Möglichkeit, mit dieser Einschränkung umzugehen umzugehen. Meine Frage ist: So etwas existiert? Kann ich diese Dateien auf andere Weise hinzufügen, damit ich die komplexe Struktur von VS nicht benötige? Muss ich C# oder Xamarin Studio gegen meinen Willen benutzen?

Antwort

5

Die Verweise auf Ordnerdateien müssen zusammen aufgelistet werden, sie können nicht mit Dateien an verschiedenen Orten vermischt werden. Sortieren Sie die Refs und es wird gut.

EDIT, für Klarheit:

<ItemGroup> 
<Compile Include="folder\file1.fs" /> 
<Compile Include="file.fs" /> <-- this can't be between the folder files, all folder files have to be listed together 
<Compile Include="folder\file2.fs" /> 
</ItemGroup> 
+0

Oh, Junge, das war eine ziemlich spezielle! Danke, Eugene, du hast den Tag gerettet :) –

+0

Entschuldigung, was sind "Verweise auf Ordner-Dateien"? – robkuz

+0

@robkuz für Klarheit bearbeitet –

1

Leider unterstützt die Visual Studio-Standardintegration keine Ordner in F # -Projekten.

Ihre beste Option ist die Verwendung der Visual F# PowerTools. Dies fügt einige Unterstützung für folders to F# projects und so kann es gut genug arbeiten, um zu tun, was Sie brauchen. Wenn dies nicht der Fall ist, ist Visual F # PowerTools ein Open-Source-Projekt und es heißt immer Beiträge willkommen!

Ich weiß nicht viel über die Xamarin Android-Projekttypen - aber ich denke, dass das Hinzufügen von C# -Projekt, das nur eine leere DLL zum Speichern der Ressourcen ist, eine sinnvolle Alternative wäre. (Dann sollten Sie in der Lage sein, dies von F # aus zu referenzieren und alle Ressourcen von dort zu laden.)

+0

ich schon Power installiert und es scheint es in diesem Fall nicht funktioniert. Was den letzten Teil anbelangt, würde csproj nicht funktionieren, da Xamarin während der Build-Phase eine Datei generiert, die diese Ressourcen verwendet, sodass sie an anderer Stelle im Code referenziert werden können, sodass sie sich im selben Projekt befinden muss. Das Seltsame ist, dass Xamarin F # und VS unterstützt, also sollte das wirklich funktionieren. Vielen Dank für Ihre Antwort :) –

+1

Hmm, können Sie ein Problem mit VFPT mit einer bestimmten Beschreibung des Szenarios öffnen, das nicht funktioniert? Sie sind ziemlich aktiv und könnten Ihnen zumindest einen Hinweis geben, was im Quellcode geändert werden muss, damit es funktioniert! –

+1

Wenn ich dieses Problem hätte, würde ich wahrscheinlich ein F # -Skript zusammenhacken, um die 'fsproj'-Datei zu modifizieren und alle Dateien in einen Unterordner einzuschließen. Schließlich ist es nur eine XML-Datei :-). Das ist sicherlich sehr hacky Methode, aber es könnte funktionieren, bis dies in VFPT oder Xamarin gelöst ist. –

Verwandte Themen