ExcelDna和独立的F#安装

我已经在Windows上下载了F#压缩分发(即,没有安装程序),使用ExcelDna时遇到了困难。

当我将FSharp.Core.dll和powerpack复制到ExcelDna文件(xxx.dna和xxx.xll)的目录中,并将代码用于dna文件(见下文)时,它不起作用是没有错误信息)。

<DnaLibrary Name="FSharp Sample" Language="F#"> <![CDATA[ namespace Foo module Bar = open ExcelDna.Integration let sayhello () = "Hello from F#" [<ExcelFunction(Category="FSharp Functions", Description="FSharp function to add numbers")>] let add xy = x + y let rec factorial = function | x when (x > 1.0) -> (floor x) * factorial (x - 1.0) | _ -> 1.0 ]]> </DnaLibrary> 

但是,它可以在目录中使用dll,并使用对F#编译库的引用,如下所示:

 <DnaLibrary> <ExternalLibrary Path="MyExcelDna.dll" /> </DnaLibrary> 

其他语言(C#和VB)似乎工作正常。

有没有人使用ExcelDna工具与压缩的F#分布? 会有人有任何想法可能是错的?

非常感谢您的帮助。

Excel DNA库是否使用CodeDOM编译F#代码片段?

如果是的话,那么你需要确保CodeDOM提供者能够findfsi.exe可执行文件(以便它可以调用它来编译)。 默认情况下,这使用一些registry设置,所以这可能是一个问题。 您可以通过查看BinFolderOfDefaultFSharpCompiler中的源代码中的BinFolderOfDefaultFSharpCompiler来了解parsing如何工作。

也许可以将fsharp-compiler-location的键值添加到某个app.config (不知道应该是哪一个)。

或者,您可以尝试从CodePlex上的可用来源编译FSharp.Compiler.CodeDom.dll ,并查看CodeDom提供程序是否被调用(以及哪些参数)。 只编译这个单个项目应该不难(创build新项目并在那里复制源文件可能更容易,因为在CodePlex上可用的项目文件是自定义的,有点混乱)

我build议你在一个DNA组中提出问题:Govert(ExcelDNA的作者)擅长回答。 http://groups.google.com/group/exceldna