如何通过NuGet分发F#类型提供程序?

Cam*_*art 6 f# nuget type-providers

我的F#类型提供程序似乎没有工作,除非它的所有依赖项都在同一个文件夹中.这对于通过nuget分发类型提供程序不起作用.有关如何解决此问题的任何建议?

我会得到如下错误:错误FS3033:类型提供程序'Froto.Gen.ProtoTypeProvider'报告错误:无法加载文件或程序集'Froto.Roslyn,Version = 0.0.0.1,Culture = neutral,PublicKeyToken = null'或其中一个依赖项.该系统找不到指定的文件.

类型提供程序在此库中: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包来更好地解释问题.

Joh*_*lph 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)。