11

やや F# 初心者。最初にスクリプト (fsx) ファイルに入力して、対話型ウィンドウで XmlTypeProvider コードの一部をテストしようとしています。スクリプト ファイルは次のものを認識しません。

open FSharp.Data  // gives "The namespace or module 'FSharp' is not defined"

すべてが参照に追加され、.fs ファイルは XmlTypeProvider 参照を見つけるのに問題がないように見えますが、何らかの理由で、同じプロジェクト内のスクリプトには問題がありません。コードを .fs ファイルで動作させることさえできました。

FSharp.Data を nuget で追加したところ、すべてが正しく追加されたようです。ここで何が欠けていますか?

4

2 に答える 2

10

FSharp.Data.dll を含む nuget パッケージ フォルダーへの参照をスクリプトに追加します。そのフォルダーには、デザイナー dll (FSharp.Data.DesignTime.dll) も含まれています。

#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll"
于 2014-11-26T14:12:23.610 に答える
5

ちなみに、私は先週このエラーをデバッグしていました。基本的に次の 3 つの理由が考えられます。

  • ファイルが見つかりませんでした。最も明白なのは、F# が実際にdllファイルを見つけられないことです。参照が正しいことを確認するか (プロジェクト プロパティの [参照] を確認) #r、正しいファイルを指していることを確認します (F# スクリプト ファイルを使用している場合)。

  • 型プロバイダーは信頼されていません。型プロバイダーが Visual Studio によってブロックされています。これは、プロバイダーを初めてロードするときに [無効にする] をクリックした場合に発生する可能性があります。これを修正するには、[ツール] - [オプション] - [F# ツール] - [タイプ プロバイダー] に移動し、タイプ プロバイダーを有効にします ([信頼済み] をチェックします)。

  • DLL が OS によってブロックされています。最後に、dllが信頼できないソースからのものである場合、Windows はそれをブロックする可能性があります (これは特に、zipWindows を使用してファイルをダウンロードし、ファイルを抽出した場合に発生します)。ファイルのブロックを解除するには、ファイルのプロパティに移動し、[ブロック解除] をクリックします。ここに良い説明があります。.

于 2013-05-02T22:56:24.180 に答える