我的F#类型提供程序似乎没有工作,除非它的所有依赖项都在同一个文件夹中。这对于通过nuget分发类型提供程序不起作用。有关如何解决此问题的任何建议吗?
我会收到如下错误: 错误FS3033:类型提供程序'Froto.Gen.ProtoTypeProvider'报告错误:无法加载文件或程序集'Froto.Roslyn,Version = 0.0.0.1,Culture = neutral,PublicKeyToken = null'或其依赖项之一。系统找不到指定的文件。
类型提供程序位于此库中: 包\ Froto.Gen.0.0.0.1 \ lib中\ net45 \ Froto.Gen.dll
依赖项都在项目中。如果我将它们全部复制到packages \ Froto.Gen.0.0.0.1 \ lib \ net45 \中,则类型提供程序可以正常工作。
2012-11-19更新:我今天将创建一个NuGet包来更好地解释这个问题。
答案 0 :(得分:4)
此问题不是F#特定的。你必须要么
nuget包可以轻松包含多个dll(如果打包正确)。您可以在此处详细了解如何创建包:http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package
如果您在将NuGet与项目msbuild脚本集成时遇到问题,我建议您查看其他开源项目用于构建其NuGet包的脚本(例如,查看FSharpX或FSharp Power Pack)。
答案 1 :(得分:3)
FSharpx.TypeProviders存在类似的问题,它依赖于FSharpx.Core。解决方案是使用ILMerge将所有依赖项合并到类型提供程序中。检查https://github.com/fsharp/fsharpx/issues/91
中的主题