ExcelDna & автономная установка F # - PullRequest
3 голосов
/ 06 декабря 2010

Я скачал дистрибутив F # zip (т. Е. Без установщика) в Windows, и у меня возникают трудности с использованием ExcelDna.

Когда я копирую FSharp.Core.dll и блоки питания вдиректории файлов ExcelDna (xxx.dna и xxx.xll) и использования кода в файле днк (см. ниже), он не работает (хотя сообщения об ошибках нет).

<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), кажется, работают нормально.

Кто-нибудь использовал инструменты ExcelDna с дистрибутивом F # в архиве?Кто-нибудь знает, что может быть не так?

Большое спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Использует ли библиотека Excel Excel CodeDOM для компиляции фрагмента кода F #?

Если да, то вам нужно убедиться, что провайдер CodeDOM может найти исполняемый файл fsi.exe (чтобы он мог вызывать его для выполнения компиляции). По умолчанию используются некоторые параметры реестра, поэтому это может быть проблемой. Вы можете увидеть, как работает разрешение, посмотрев BinFolderOfDefaultFSharpCompiler в источниках в CompilerLocationUntils.fs .

Может быть, добавление ключа fsharp-compiler-location к некоторому app.config (не уверен, какой это должен быть), может работать.

В качестве альтернативы, вы можете попробовать скомпилировать FSharp.Compiler.CodeDom.dll из источников , доступных на CodePlex , и посмотреть, будет ли вызван поставщик CodeDom (и с какими аргументами). Компиляция только этого единственного проекта не должна быть трудной (вероятно, легче создать новый проект и скопировать туда исходные файлы, потому что файлы проекта, доступные в CodePlex, настроены и немного сбивают с толку)

0 голосов
/ 06 декабря 2010

Я бы предложил вам задать вопрос в одной из групп ДНК: Говерт (автор ExcelDNA) хорош в ответе.http://groups.google.com/group/exceldna

...