2016-02-19 11 views
2

Я хотел бы использовать библиотеку Roslyn из приложения EdgeJS, но я не уверен, как правильно ее отредактировать. Это код, о котором идет речь:Как ссылаться на сборки Roslyn из приложения EdgeJS?

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", чтобы убедиться, что все зависимые сборки расположены в той же папке, что и мое приложение-узел.

Это два варианта, которые у меня есть или я чего-то не хватает?

ответ

2

Вы также можете указать полные имена ссылки на сборку в виде массива, передаваемого в edge.func вызова, как описано в https://github.com/tjanczuk/edge#how-to-specify-additional-clr-assembly-references-in-c-code:

 
var add7 = edge.func({ 
    source: function() {/* 

     using System.Data; 
     using System.Threading.Tasks; 

     public class Startup 
     { 
      public async Task Invoke(object input) 
      { 
       // ... 
      } 
     } 
    */}, 
    references: [ 'System.Data.dll' ] 
); 

Вы можете найти его проще constuct полностью квалифицированные имена сборки в JavaScript, а не вставлять как часть директивы #r в коде.

 Смежные вопросы

  • Нет связанных вопросов^_^