4

https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-F-Toolsで、Suave を使用したプロジェクトを作成するビデオを見ました。何が行われているかを正確に追跡しようとしましたが、VS 2017 のインストールは今日更新されたばかりで、動作がまったく異なります。

mscorlibまず、ビデオとまったく同じように Suave をインストールすると、ビデオと同じように、との間のリファレンスに表示されSystemます。

次に、ビデオは次のコードを示しています。

[<EntryPoint>]
let main argv = 
    startWebServer
    0 // return an integer exit code

この時点で、VS 2017 はビデオで「Open Suave」を提案します。これは、startWebServer が認識されないためです。同じコードをエディターのファイルにコピーしましたProgram.fs。「値またはコンストラクター 'startWebServer' が定義されていません」というエラー メッセージが表示されますが、左側の黄色の領域にカーソルを置いたときに提案はありません。(Community Edition を使っているからでしょうか?)

いずれにせよ、open Suaveコードに追加したので、次のようにしました。

open Suave

[<EntryPoint>]
let main argv = 
    startWebServer
    0 // return an integer exit code

この時点で、Suave の下に赤い波線が表示され、「The namespace or module 'Suave' is not defined.」というエラー メッセージが表示されます。

ソリューション エクスプローラーで Suave を右クリックし、[Send to Interactive] を選択するとSuave、F# Interactive で開くことができます。

Deedle などの他のパッケージを問題なくインストールして使用できます。

何が間違っているかについてのアイデアはありますか?

4

1 に答える 1

4

もちろん、できますが、ちょっとした作業になるかもしれません。

ここに画像の説明を入力

必要に応じて、私のレポを複製できるはずです。私の fsprojects ファイルは FSharp.Core の明示的なバージョンを参照していないので、ターゲットと実際のバージョンとの間に混乱はありません。それは実際には FSharp.Core 4.1 btw です。

元のソリューションから作業している場合は、最初に新しいソリューションを作成します。

  1. プロジェクトを .NET 4.6.2 (または好きなもの) に設定します。
  2. ターゲット F# 4.1
  3. ヌゲット・スエーブ

このポイント nuget を追加すると、FSharp.Core がダウンロードされ、プロジェクトで置き換えられます。それはあまりいいことではありません。

  1. 参照から FSharp.Core を削除します
  2. Nuget から FSharp.Core 4.1 を追加します。

準備完了です:

ここに画像の説明を入力

また、 VS2017用のパケットをインストールすることをお勧めします。その後、VS の [ツール] メニューからアクセスできます。そうすれば、Suave と FSharp.core を paket.references と依存関係ファイルに追加し、 set redirects: on、メニューから Paket install を実行するだけで、このバージョンの不一致ビジネスをすべて忘れることができます。多くの fsx ファイルを使用している場合、これは非常に便利です。パケットがパスからバージョン番号を削除するからです。GitHub のソリューションの paket.dependencies および paket.references ファイルを見てください。

ソリューション ルートの paket.dependencies:

framework: = net462
source https://www.nuget.org/api/v2
redirects: on

nuget Suave

プロジェクト フォルダー内の paket.references:

Suave
FSharp.Core
于 2017-04-18T05:25:29.050 に答える