2

我想使用 EdgeJS 应用程序中的 Roslyn 库,但不确定如何正确引用它。这是有问题的代码:

var edge = require('edge');
var toroslyn = edge.func(function(){/*
   using System;
   using System.Threading.Tasks;
   using Microsoft.CodeAnalysis.CSharp.Scripting;
   public class Startup
   {
      public async Task<object> Invoke(object code)
      {
         return await CSharpScript.EvaluateAsync("1 + 2");
      }
   }
*/
});
toroslyn(null, function (error, result) { console.log(result); });

和project.json:

{
  "dependencies": {
     "Microsoft.CodeAnalysis.CSharp.Scripting": "1.1.1",
  },
  "frameworks": {
     "dnxcore50": {}
  }
}

如果这样做之后dnu restore就可以正常工作,那就太好了,但是文档指出我需要引用内联的依赖项,例如#r "Microsoft.CodeAnalysis.CSharp.Scripting.dll".

但是,为了让它工作,我需要指定程序集的整个路径,#r "C:/Users/Christian/.dnx/packages/....../Microsoft.CodeAnalysis.CSharp.Scripting.dll"或者确保所有依赖程序集与我的节点应用程序位于同一文件夹中。

这是我拥有的两个选项还是我错过了什么?

4

1 回答 1

2

您还可以将完全限定的参考程序集名称指定为传递给调用的数组,edge.funchttps://github.com/tjanczuk/edge#how-to-specify-additional-clr-assembly-references-in-c-中所述代码

var add7 = edge.func({
    来源:函数(){/*

        使用 System.Data;
        使用 System.Threading.Tasks;

        公共类启动
        {
            公共异步任务调用(对象输入)
            {
                // ...
            }
        }
    */},
    参考:['System.Data.dll']
);

您可能会发现在 JavaScript 中构造完全限定的程序集名称比将其作为#r指令的一部分嵌入代码更容易。

于 2016-02-21T00:39:20.283 回答