如何在Visual Studio中使用Roslyn?及C#代码运行配置方法
嘿,我来一步步帮你搞定在Visual Studio里用Roslyn的事儿,还有你那段脚本代码的配置问题~
如何在Visual Studio中使用Roslyn?
Roslyn是微软的.NET编译器平台,在Visual Studio里用它主要分两种场景,配置方式略有不同:
- 代码分析/重构场景:如果你想做自定义代码分析器、代码重构工具,直接创建「类库(.NET Standard/.NET Core)」项目,安装
Microsoft.CodeAnalysis系列NuGet包(比如Microsoft.CodeAnalysis.CSharp)即可。Visual Studio本身内置Roslyn作为默认编译器,很多基础功能无需额外配置就能用。 - 脚本执行场景:就是你代码里用到的动态执行C#脚本的功能,这需要额外安装脚本相关的NuGet包,下面重点说这个场景的配置。
你的Roslyn脚本代码的配置步骤
你这段代码用到的是Roslyn的脚本功能,但旧版的Roslyn.Scripting命名空间已经被整合到官方的Microsoft.CodeAnalysis.Scripting体系中了,需要做这些调整才能正常运行:
创建合适的项目
打开Visual Studio,新建一个「控制台应用」项目(推荐用.NET Core/.NET 5+,或者.NET Framework 4.7.2及以上版本,避免兼容性问题)。安装正确的NuGet包
右键项目 → 「管理NuGet程序包」,在浏览页搜索并安装Microsoft.CodeAnalysis.CSharp.Scripting包(这是官方维护的最新脚本包,旧的Roslyn.Scripting已被弃用,别装错)。替换命名空间引用
把原来的旧命名空间替换为新的官方命名空间:using Microsoft.CodeAnalysis.Scripting; using Microsoft.CodeAnalysis.Scripting.CSharp;适配API变化
旧版的Session.Create()方法现在改为由ScriptEngine实例创建,同时最新版本推荐使用异步API,调整后的代码可以这样写:namespace RoslynScriptingDemo { class Program { static void Main(string[] args) { // 方式1:保留Session的写法 var engine = new ScriptEngine(); var session = engine.CreateSession(); engine.Execute(@"var a = 42;", session); engine.Execute(@"System.Console.WriteLine(a);", session); // 方式2:更简洁的链式异步写法(推荐) // CSharpScript.ExecuteAsync(@"var a = 42; System.Console.WriteLine(a);").Wait(); } } }运行验证
按F5启动项目,控制台应该会输出42,说明配置成功了。
额外注意点
- 若使用.NET Framework,必须保证版本在4.7.2及以上,否则可能出现API兼容问题。
- 安装NuGet包时优先选择稳定版,避免使用预发布版本踩坑。
内容的提问来源于stack exchange,提问作者user9570328
相关产品推荐
相关产品推荐

