2010-12-06 49 views
3

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

当我将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 x y = x + y 

     let rec factorial = function 
     | x when (x > 1.0) -> (floor x) * factorial (x - 1.0) 
     | _ -> 1.0 

    ]]> 
</DnaLibrary> 

然而,它确实与该目录中的动态链接库的工作,并使用一个F#-compiled库的引用,如:

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

其他语言(C#& VB)似乎做工精细。

有没有人使用ExcelDna工具与压缩的F#分布?任何人都不知道什么可能是错的?

非常感谢您的帮助。

+0

嗨,你是否解决了这个问题到底 ? – nicolas 2013-01-21 19:55:15

回答

0

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

+0

他建议使用StackOverflow,因为他可能是大多数人使用的安装程序。不过,我想避免编译dll,并且不要求每个人都在他们的机器上安装F#和powerpack。 – 123 2010-12-06 16:01:42

1

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

如果是,那么您需要确保CodeDOM提供程序可以找到fsi.exe可执行文件(以便它可以调用它来执行编译)。默认情况下,它使用一些注册表设置,所以这可能是一个问题。您可以通过在CompilerLocationUntils.fs的源文件中查看BinFolderOfDefaultFSharpCompiler来查看解析的工作原理。

也许增加键fsharp-compiler-location到一些app.config(不知道哪一个应该虽然)可以工作。

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

+0

是的,我认为问题来自那里。它似乎从鳕鱼ethat它可以与同一目录中的其他文件(fsi ...),但显然不是这样...我会坚持编译,而不是将代码放入dna文件。但感谢您的帮助,至少我更好地理解了这个问题。 – 123 2010-12-10 10:35:43