【问题标题】:How do I enable C# scripting in VS 2015?如何在 VS 2015 中启用 C# 脚本?
【发布时间】: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


    【解决方案1】:

    脚本 API 仍在开发中,已从发布包中删除。

    试试夜睡。

    【讨论】:

    • 早先尝试过睡床,但有过时的例子。更好的示例编译但有几个警告:“分析器实例 Microsoft.CodeAnalysis.Analyzers.InternalImplementationOnlyAnalyzer 无法从 ...\RoslynScriptingTest\packages\Microsoft.CodeAnalysis.Analyzers.1.1.0-beta1-20150725-01\analyzers\dotnet 创建\cs\Microsoft.CodeAnalysis.Analyzers.dll: 无法加载文件或程序集 'Microsoft.CodeAnalysis, Version=1.1.0.0, ...' 或其依赖项之一。系统找不到指定的文件。” EXE 在 CSharpScript.Create() 中抛出 TypeInitializationException。
    • 将该软件包也升级为 nightly。
    • 不确定要安装哪个软件包,或者从哪里获得它。我已经尝试了 roslyn-nightly 网站上的所有内容。请参阅上面的更新 #1。谢谢。
    • 将元数据包更新到预发布版本。
    • 我在myget.org/F/dotnet-core 上找到了 System.Reflection.Metadata。安装后,事情变得奇怪了,VS 抱怨像“System.Object”和“System.String”这样的预定义类型“没有定义或导入”。感谢您的帮助,但我认为我需要一个包含要安装的完整软件包列表的配方。我用谷歌搜索了说明,但找不到任何东西。
    【解决方案2】:

    使用 Visual Studio 2015 更新 1,REPL 又回来了,并且脚本 API 已启用。

    这是微软对此的评价:

    在此版本中,C# 交互窗口以及命令行 C# REPL 窗口重新回到 Visual Studio 中。 (交互式窗口是 Visual Studio 中的 REPL 窗口。)

    我们还发布了脚本 API,使您能够将 C# 作为脚本构建和运行。 GitHub 上提供了脚本 API。

    此外,我们还发布了 csi.exe,这是一个可用于从开发人员命令提示符运行 C# 脚本文件 (.csx) 的工具。例如,只需键入 csi myScript.csx 即可运行您的脚本文件。或者,您可以进入命令行 REPL 模式以交互方式评估 C# 代码的 sn-ps。要进入此模式,请从开发人员命令提示符运行不带任何参数的 csi 命令。

    参考: https://www.visualstudio.com/news/vs2015-update1-vs#Csharp

    【讨论】:

    • 虽然该链接在这种情况下肯定会有所帮助,但那里有一些 gotchasthis 答案,其中指出 链接到 更多 信息 - 而不仅仅是链接信息:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2017-11-13
    • 2012-07-15
    • 1970-01-01
    相关资源
    最近更新 更多