3

Windows で F# zip ディストリビューション (つまり、インストーラーなし) をダウンロードしましたが、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 x y = 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) は問題なく動作するようです。

圧縮された F# ディストリビューションで ExcelDna ツールを使用した人はいますか? 何が間違っているのか誰にも分かりますか?

助けてくれて本当にありがとうございます。

4

2 に答える 2

1

Excel DNA ライブラリは CodeDOM を使用して F# コード スニペットをコンパイルしていますか?

はいの場合は、CodeDOM プロバイダーがfsi.exe実行可能ファイルを見つけられることを確認する必要があります (それを呼び出してコンパイルを実行できるようにするため)。デフォルトでは、これはいくつかのレジストリ設定を使用するため、これが問題になる可能性があります。CompilerLocationUntils.fsBinFolderOfDefaultFSharpCompilerのソースを見ると、解決がどのように機能するかを確認できます。

たぶん、fsharp-compiler-locationいくつかにキーを追加するapp.configこともできます(ただし、どれが必要かはわかりません)。

または、 CodePlex で入手可能なFSharp.Compiler.CodeDom.dllソースからをコンパイルして、CodeDom プロバイダーが呼び出されるかどうか (およびどの引数で) を確認することもできます。この単一のプロジェクトだけをコンパイルすることは難しくありません (CodePlex で入手できるプロジェクト ファイルはカスタマイズされており、少し混乱するため、新しいプロジェクトを作成してそこにソース ファイルをコピーする方がおそらく簡単です)。

于 2010-12-06T16:28:10.510 に答える
0

DNA グループの 1 つで質問することをお勧めします。Govert (ExcelDNA の作成者) は答えるのが得意です。 http://groups.google.com/group/exceldna

于 2010-12-06T14:34:12.350 に答える