【发布时间】:2015-10-16 10:50:26
【问题描述】:
如何配置 VS 2015 以启用 Roslyn 的 C# 脚本功能?
我尝试安装各种 Nuget 包,包括 Microsoft.CodeAnalysis.CSharp、Microsoft.CodeAnalysis.Scripting.CSharp 等的 1.0 和 1.1.0-beta1 版本,但我无法获得任何我在网上找到的可以工作的例子。我收到“找不到类型”错误,即
var scriptEngine = new ScriptEngine();
...失败,因为找不到类型“ScriptEngine”。
有人可以提供包含要安装哪些 nuget 包、需要哪些 using 语句等的配方来实现 Roslyn 脚本吗?
更新 #1:
我取得了一些进展,但仍有问题。我收到一堆编译器警告,然后是 TypeInitilizationException,这显然是由于组件版本不匹配造成的。
我现在正在使用以下示例代码(取自测试),并且没有丢失类型:
using System;
using Microsoft.CodeAnalysis.Scripting.CSharp;
namespace RoslynScriptingTest {
class Program {
static void Main(string[] args) {
var script = CSharpScript.Create("1 + 2");
var fn = script.CreateDelegate();
var value = fn();
Console.WriteLine("value={0}", value.ToString());
}
}
}
我已经加载了https://www.myget.org/F/roslyn-nightly/ 提供的所有夜间软件包。
我收到一系列关于 Microsoft.CodeAnalysis,v1.1.0.0 的构建警告。
不顾警告运行 exe 会产生上面提到的 TypeInitilizationException。根据堆栈跟踪,TypeInitializationError 是由 System.Reflection.Metadata.dll 的版本不匹配引起的。
我不知道从这里去哪里。我不明白脚本相关的包/组件是如何组合在一起的。我看到今年早些时候的一些帖子完全描述了构建 Roslyn。我没有这样做。有必要吗?
这让我想起了过去的 DLL 地狱。
【问题讨论】:
标签: c# scripting roslyn c#-6.0