Roslyn 5和VS2022中不散的红色浪线问题怎么解决?

摘要:本文地址:https:www.cnblogs.comoberon-zjt0806p19429665 同步更新至知乎 目录首先祝大家2026新年快乐!🎉🐴前请提要有趣的
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/19429665 同步更新至知乎 目录首先祝大家2026新年快乐!🎉🐴前请提要有趣的部分Good End 首先祝大家2026新年快乐!🎉🐴 先说本文的结论—— Visual Studio 2022的IntelliSense似乎不能和Roslyn 5.0良好配合,导致MSBuild无法加载到生成器构建的代码 如果想在Visual Studio 2022中使用代码分析服务,请确保引用的Nuget包Microsoft.CodeAnalysis的版本为4.x MSDN文档列举了Roslyn版本与具体IDE的兼容情况,详见这里 另外,如果目标项目的CS0103或者CS0246没有立即褪去,那么你需要关闭报错的文件,清理并重新生成解决方案。 如果非要使用Roslyn 5.0,那么应该使用VS2026 前请提要 昨天想接触一下传说中的源代码生成器(Source Generator),于是就查了一堆资料照猫画虎写了一个—— /// 生成器程序集 SourceGeneratorDemo.Generators using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; using System.Text; namespace SourceGeneratorDemo.Generators; [Generator] public class HelloWorldGenerator : IIncrementalGenerator { public void Initialize(IncrementalGeneratorInitializationContext context) { // A simple pipeline that always produces a single string var helloSource = context.AnalyzerConfigOptionsProvider .Select((_, _) => @" namespace SourceGeneratorDemo.Generated { public class GeneratedProgram { public static void HelloWorld() { Console.WriteLine(""Hello from incremental generator!""); } } } "); context.RegisterSourceOutput(helloSource, (spc, source) => { spc.AddSource("GeneratedProgram.g.cs", SourceText.From(source, Encoding.UTF8)); }); } } 显然这个生成器预期产生下面这段代码,一个简单的Hello World类—— namespace SourceGeneratorDemo.Generated { public class GeneratedProgram { public static void HelloWorld() { Console.WriteLine(""Hello from incremental generator!""); } } } 然后安装了Roslyn,也就是Microsoft.CodeAnalysis包。按照项目配置了 <TargetFramework>netstandard2.0</TargetFramework> <LangVersion>latest</LangVersion> <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules> 然后在目标项目(此时是空的)中引用生成的代码。
阅读全文