6

すべての依存関係が同じフォルダーにない限り、私の F# 型プロバイダーは機能していないようです。これは、nuget を介して型プロバイダーを配布する場合にはうまく機能しません。これを解決する方法について何か提案はありますか?

次のようなエラーが表示されます: エラー FS3033: タイプ プロバイダー 'Froto.Gen.ProtoTypeProvider' がエラーを報告しました: ファイルまたはアセンブリを読み込めませんでした 'Froto.Roslyn, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません。

型プロバイダーはこのライブラリにあります: packages\Froto.Gen.0.0.0.1\lib\net45\Froto.Gen.dll

依存関係はすべてプロジェクトにあります。それらをすべてpackages\Froto.Gen.0.0.0.1\lib\net45\にコピーすると、タイププロバイダーが機能します。

2012 年 11 月 19 日更新: 問題をよりよく説明するために、今日 NuGet パッケージを作成します。

4

2 に答える 2

4

この問題は F# 固有ではありません。あなたは絶対にどちらかでなければなりません

  • 必要なすべての依存関係を nuget パッケージの一部として出荷します
  • NuGet に、パッケージが必要な参照を提供する他のパッケージに依存していることを知らせます

nuget パッケージには、複数の dll を簡単に含めることができます (正しくパッケージ化されている場合)。ここでパッケージを作成する方法について詳しく読むことができます: http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package

NuGet をプロジェクトの msbuild スクリプトと統合する際に問題が発生した場合は、他のオープン ソース プロジェクトが NuGet パッケージのビルドに使用しているスクリプトを参照することをお勧めします (たとえば、FSharpX または FSharp Power Pack を確認してください)。

于 2012-11-19T13:55:25.453 に答える
3

FSharpx.Core に依存する FSharpx.TypeProvider にも同様の問題がありました。解決策は、ILMerge を使用してすべての依存関係を型プロバイダーにマージすることでした。https://github.com/fsharp/fsharpx/issues/91のスレッドを確認してください

于 2012-11-20T11:38:21.757 に答える