【问题标题】:How to reference Roslyn assemblies from an EdgeJS app?如何从 EdgeJS 应用程序引用 Roslyn 程序集?
【发布时间】:2016-02-19 12:22:06
【问题描述】:

我想使用 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 之后它可以正常工作,那就太好了,但是documentation 声明我需要像#r "Microsoft.CodeAnalysis.CSharp.Scripting.dll" 那样内联引用依赖项。

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

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

【问题讨论】:

    标签: c# roslyn coreclr edgejs


    【解决方案1】:

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

    var add7 = edge.func({ 来源:函数(){/* 使用 System.Data; 使用 System.Threading.Tasks; 公共类启动 { 公共异步任务调用(对象输入) { // ... } } */}, 参考:['System.Data.dll'] );

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

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多