J'ai remarqué que l'ajout de paquets casse parfois mon code. Des fonctions comme Seq.replicate
et List.take
qui fonctionnaient ont des lignes rouges ondulées et le programme ne fonctionne plus. Voici une procédure détaillée qui devrait reproduire le problème (J'utilise VS Community Edition 2017
):Pourquoi ajouter des paquets brise mon code?
1) Créer un projet.
2) Program.fs
contient le code:
[<EntryPoint>]
let main argv =
printfn "%A" argv
0 // return an integer exit code
3) Ajouter deux lignes de code comme suit:
[<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
, le programme se déroule sans aucun problème.
4) Cliquez avec le bouton droit sur References
sur Solution Explorer
. Cliquez sur Manage Nuget Packages...
. 5) Cliquez sur Browse
.
6) Recherchez Newtonsoft.Json
et installez-le.
7) Appuyez sur Ctrl+F5
, le programme fonctionne sans aucun problème. Les gravures de la console
["A"; "A"; "A"; "A"; "A"]
[||]
8) Procéder comme dans les étapes 4 à 6 et installer le paquet MathNet.Numerics
utilisant Nuget
.
9) Hit Ctrl+F5
, le programme fonctionne sans aucun problème. Les gravures de la console
["A"; "A"; "A"; "A"; "A"] [||]
10) Procéder comme dans les étapes 4 à 6 et installer le paquet MathNet.Numerics.FSharp
utilisant Nuget
. 10) Cliquez sur l'onglet Program.fs
Les lignes rouges effrayantes redoutées sont apparues sous Seq.replicate and
List.take`.
12) Appuyez sur Ctrl+F5
. Une boîte de dialogue apparaît avec le message suivant:
There were build errors. Would you like to continue and run the last successful build?
Questions:
a) Qu'est-ce qui se passe exactement?
b) S'agit-il d'un cas isolé lié à un problème dans MathNet.Numerics.FSharp
ou à la combinaison spécifique de packages installés ou à l'ordre dans lequel ils ont été installés? Ou est-ce un problème commun?
c) Est-il possible d'éviter ce problème lors de l'utilisation de Nuget?
d) Si non, est-il possible d'éviter ce problème en installant par d'autres moyens (pas Nuget)?
Quelles sont les versions des paquets installez-vous? – mydogisbox
(1) Quelle est l'erreur sous le squiggly rouge? (2) Avez-vous remarqué que l'installation de 'MathNet.Numerics.FSharp' a provoqué l'installation de tous les paquets _other_ (en raison de dépendances transitives)? –
@FyodorSoikin - L'erreur sous le rouge squiggly est 'La valeur, le constructeur, l'espace de noms ou le type 'répliquer' n'est pas défini'. Lorsque 'MathNet.Numerics.FSharp' est installé, il installe' FSharp.Core.3.1.2.5'. – Soldalma