Ich habe festgestellt, dass das Hinzufügen von Paketen manchmal meinen Code zerstört. Funktionen wie und List.take
, die funktionierten, bekommen rote, verschnörkelte Linien und das Programm läuft nicht mehr. Hier ist eine detaillierte Prozedur, die das Problem replizieren sollte (ich verwende VS Community Edition 2017
):Warum wird mein Code durch das Hinzufügen einiger Pakete beschädigt?
1) Erstellen Sie ein Projekt.
2) Program.fs
den Code enthält:
[<EntryPoint>]
let main argv =
printfn "%A" argv
0 // return an integer exit code
3) zwei Codezeilen hinzufügen wie folgt:
[<EntryPoint>]
let main argv =
let repla = Seq.replicate 10 "A"
printfn "%A" (repla |> List.ofSeq |> List.take 5)
printfn "%A" argv
0 // return an integer exit code
3) Hit Ctrl+F5
, läuft das Programm ohne Probleme.
4) Klicken Sie mit der rechten Maustaste auf auf der Solution Explorer
. Klicken Sie auf Manage Nuget Packages...
.
5) Klicken Sie auf Browse
.
6) Suchen Sie nach Newtonsoft.Json
und installieren Sie es.
7) Hit Ctrl+F5
, das Programm läuft ohne Probleme. Die Konsole druckt
["A"; "A"; "A"; "A"; "A"]
[||]
8), gehen Sie wie in den Schritten 4 bis 6 und Installationspaket MathNet.Numerics
Nuget
verwenden.
9) Hit Ctrl+F5
, das Programm läuft ohne Probleme. Die Konsole druckt
["A"; "A"; "A"; "A"; "A"] [||]
10), gehen Sie wie in den Schritten 4 bis 6 und Installationspaket MathNet.Numerics.FSharp
Nuget
verwenden.
11) Klicken Sie auf die Registerkarte Program.fs
. Die gefürchteten roten Schlangenlinien erschienen unter Seq.replicate and
List.take`.
12) Hit Ctrl+F5
. Nun erscheint ein Dialog mit der folgenden Meldung auf:
There were build errors. Would you like to continue and run the last successful build?
Fragen:
a) Was genau ist passiert?
b) Ist dies ein Einzelfall, der auf ein Problem in MathNet.Numerics.FSharp
oder die spezifische Kombination von installierten Paketen oder die Reihenfolge, in der sie installiert wurden, zurückzuführen ist? Oder ist das ein häufiges Problem?
c) Kann dieses Problem während der Verwendung von Nuget vermieden werden?
d) Wenn nicht, ist es möglich, dieses Problem durch Installation auf andere Weise (nicht durch Nuget) zu vermeiden?
Welche Versionen der Pakete installieren Sie? – mydogisbox
(1) Was ist der Fehler unter dem roten Schnörkel? (2) Ist Ihnen aufgefallen, dass die Installation von 'MathNet.Numerics.FSharp' die Installation von _other_ Paketen (aufgrund transitiver Abhängigkeiten) verursacht hat? –
@FyodorSoikin - Der Fehler unter dem roten Squiggly ist 'Der Wert, Konstruktor, Namespace oder Typ 'Replikat' ist nicht definiert '. Wenn "MathNet.Numerics.FSharp" installiert ist, wird auch 'FSharp.Core.3.1.2.5' installiert. – Soldalma