【发布时间】:2021-05-16 03:37:43
【问题描述】:
最近我正在更新自己以学习这项新技术,但是即使我按照教程一步一步进行操作,我也无法运行源代码生成器。
我做了什么:
-
使用控制台应用程序创建一个解决方案,然后添加一个类库项目。这两个项目都是 .NET 5。
-
为这两个项目安装 NuGet 包
Microsoft.CodeAnalysis.CSharp.Workspaces。 -
在类库项目中,编写如下代码:
using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; using System.Text; namespace ClassLibrary { [Generator] public class MySourceGenerator : ISourceGenerator { public void Execute(GeneratorExecutionContext context) { context.AddSource("myGeneratedFile.cs", SourceText.From(@" namespace GeneratedNamespace { public class GeneratedClass { public static void GeneratedMethod() { // generated code } } }", Encoding.UTF8)); } public void Initialize(GeneratorInitializationContext context) { } } } -
在控制台应用程序的Main方法中,编写如下代码:
GeneratedNamespace.GeneratedClass.GeneratedMethod(); -
在控制台应用的.csproj中,添加如下代码:
<ItemGroup> <ProjectReference Include="..\ClassLibrary_ExperimentalSourceGenerator\ClassLibrary_ExperimentalSourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> </ItemGroup> -
构建解决方案。
-
收到以下错误:
CS0103
当前上下文中不存在名称“GeneratedNamespace” ConsoleApp1 D:\OneDrive\VS Solutions\ConsoleApp1\Program.cs以下警告:
CS8032
无法从 D:\OneDrive\VS Solutions\ClassLibrary_ExperimentalSourceGenerator\bin\Debug\net5.0\ClassLibrary_ExperimentalSourceGenerator.dll 创建分析器 ClassLibrary.MySourceGenerator 的实例:无法加载文件或程序集 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。系统找不到指定的文件。
【问题讨论】:
标签: c# .net visual-studio