我的问题
有没有一个简单的示例来展示如何从C#代码中调用Clojure函数,就像上面那样?
有没有关于如何从C#与Clojure互操作时考虑命名空间和文件夹结构的一般文档说明?
我现在的主要目标是享受乐趣,并最终使用nREPL + CIDER成功运行一些东西。
我试图使用load.invoke加载(clojure.tools.nrepl),但在放置dll以及如何重命名它的地方感到困惑!
// 使用以下代码
IFn load = clojure.clr.api.Clojure.var("clojure.core", "load");
var r = load.invoke("tools.nrepl");
我输出了RT.cs静态FileInfo FindFile(string path, string filename)
probePath属性并发现以下内容
...是其框架文件夹的绝对路径(net7.0)
...\net7.0\clojure\tools.nrepl.cljr
...\net7.0\bin\clojure\tools.nrepl.cljr
...\net7.0\clojure\tools.nrepl.cljr
...\net7.0\clojure\tools.nrepl.cljc
...\net7.0\bin\clojure\tools.nrepl.cljc
...\net7.0\clojure\tools.nrepl.cljc
...\net7.0\clojure\tools.nrepl.clj
...\net7.0\bin\clojure\tools.nrepl.clj
...\net7.0\clojure\tools.nrepl.clj
...\net7.0\clojure.tools.nrepl.cljr.dll
...\net7.0\bin\clojure.tools.nrepl.cljr.dll
...\net7.0\clojure.tools.nrepl.cljr.dll
...\net7.0\clojure.tools.nrepl.cljc.dll
...\net7.0\bin\clojure.tools.nrepl.cljc.dll
...\net7.0\clojure.tools.nrepl.cljc.dll
...\net7.0\clojure.tools.nrepl.clj.dll
...\net7.0\bin\clojure.tools.nrepl.clj.dll
...\net7.0\clojure.tools.nrepl.clj.dll
错误:无法在加载路径上找到clojure/tools.nrepl中扩展名为.cljr, .cljc, .clj, .cljr.dll, .cljc.dll, 或 .clj.dll的文件。
这些都不匹配由nuget提供的clojure.tools.nrepl.dll
操作:重命名
clojure.tools.nrepl.dll -> clojure.tools.nrepl.clj.dll
然后dll被拾取,但加载失败
clojure.lang.Compiler.AssemblyInitializationException: '找不到初始化器
对于clojure.tools.nrepl, Version=0.1.0.0, Culture=neutral,
PublicKeyToken=null.clojure/tools.nrepl'