2016-10-31 5 views
1

Ich benutze VSCode und Paket, aber verstehe nicht, wie alles auf dem Back-End miteinander verbindet.VSCode, Paket und Compilerfehler

Heute Morgen stoße ich auf ein Problem, in dem meine paket.dependencies Datei korrekt ist, aber wenn ich versuche, diese Bibliotheken in einer .FS Datei zu öffnen, erhalte ich Compilerfehler.

Ich habe einen Screenshot der Ordner/Verzeichnisstruktur sowie der Paketausgabe für Paket: Install aufgenommen.

enter image description here

Irgendwelche Ideen, was der Compiler-Fehler verursacht

The namesapce `TypeProviders` is not defined 

in der RawData.fs-Datei? Der Fehler für FSharp.Configuration ist ähnlich. Ich weiß nicht, warum sie nicht verfügbar sind; Sie sind sowohl installiert als auch in der Datei Paketabhängigkeiten und installiert.

+0

Ich habe nicht VSCode mit proj-Dateien viel (oder überhaupt in der Tat) verwendet, aber ich würde vermuten, dass die Magie der Referenzen in der proj-Datei für das Hinzufügen (oder einige .json Datei, wenn .net Kern oder etwas) ist nicht getan. Ja, ich sehe, dass dieser Hinweis bestenfalls einen Hinweis in eine Richtung gibt und nicht sofort sehr hilfreich ist ... Also: Sorry ;-) Aber schaut mal auf https://docs.microsoft.com/en-us/ dotnet/articles/fsharp/tutorials/getting-started/getting-started-vscode, https://fsprojects.github.io/Paket/ und https://github.com/fsprojects/ProjectScaffold. Diese könnten Ihnen etwas mehr helfen. –

+0

Gute Zeiger. Ich fange an zu vermuten, dass ein aktuelles Upgrade einer der Komponenten (Ionide-fsharp) etwas mit diesem Verhalten zu tun haben könnte. – Steven

Antwort

1

Können Sie überprüfen, ob die DLLs auch im Paketverzeichnis vorhanden sind? Dann sollten Sie mindestens in der .fsproj-Datei für die Bibliotheken, auf die Sie verweisen, Folgendes haben.

<Reference Include="FSharp.Configuration"> 
     <HintPath>..\packages\FSharp.Configuration.0.6.2\lib\net40\FSharp.Configuration.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
    <Reference Include="FSharp.Core"> 
     <HintPath>..\packages\FSharp.Core.3.1.2.5\lib\net40\FSharp.Core.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
    <Reference Include="FSharp.Data"> 
     <HintPath>..\packages\FSharp.Data\lib\net40\FSharp.Data.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
    <Reference Include="FSharp.Data.TypeProviders"> 
     <HintPath>..\packages\FSharp.Data.TypeProviders.5.0.0.2\lib\net40\FSharp.Data.TypeProviders.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
+0

Die '.dll'-Dateien befinden sich alle im Paketverzeichnis, jedoch nicht in der Datei' .fsproj'. Das scheint seltsam. Ich frage mich, ob es vielleicht etwas mit einem Upgrade auf 'Ionide-fsharp v2.8.9 'heute morgen zu tun hatte? Dies ist das erste Mal, dass ich dieses Verhalten gesehen habe (d. H. Das Herunterladen der Pakete, aber das Aktualisieren der '.fsproj'-Datei). – Steven

+0

Wenn ich ein neues Projekt mit Ionide v2.8.9 erstelle und dieselben Befehle verwende, um eine neue Bibliothek von Nuget zu installieren, wird die Datei '.fsproj' korrekt aktualisiert. Nach einem Upgrade in einem vorhandenen Projekt * nach * v2.8.9 funktioniert es jedoch nicht. Ich bin mir nicht sicher, was ich tun soll, außer ein Problem auf Iondides GitHub zu öffnen. – Steven

+0

@steven wenn es reproduziert werden kann, ist das eine gute Idee. Andernfalls könnten Sie versuchen, Paket oder Schmiede über die Befehlszeile zu verwenden. oder bearbeiten Sie einfach fsproj, wenn es sich um ein Einzelstück handelt. – s952163