使用IIncrementalGenerator而不是ISourceGenerator的好处之一是管道的不同阶段可以识别当前迭代的结果与先前迭代的结果相同并使用缓存的结果。 为了让它工作,大概任何IncrementalValueProvider或IncrementalValuesProvider的类型 ...
使用IIncrementalGenerator而不是ISourceGenerator的好处之一是管道的不同阶段可以识别当前迭代的结果与先前迭代的结果相同并使用缓存的结果。 为了让它工作,大概任何IncrementalValueProvider或IncrementalValuesProvider的类型 ...
我正在编写一个 Roslyn 源代码生成器,它根据指定接口的成员生成代码。 例如,给定以下接口:interface IFoo { string Bar { get; set; } } 我想生成(在其他代码中)以下属性:string IFoo.Bar { get; set; } 到目前为 ...
以下源代码生成器在初始化时创建一个新的记录类型。 然后它在另一步中选择该类型的符号,并生成一个带有时间戳的虚拟文件。 由于基础记录类型仅在初始化时生成一次,并且此后不再更改,因此我希望下一个转换步骤仅被调用一次。 但是,每次我在 IDE(Rider 2022.3.1)中键入任何内容时,它似乎都会更新 ...
我正在创建一个源代码生成器,它根据用户 C# 代码创建 Typescript 个实用程序,现在创建文件的唯一有效方法是AddSource()方法,它只能创建*.cs文件。 我需要创建*.ts文件(或*.js ),使用File.Write*也很痛苦,因为路径和引用项目是未知的( Environment ...
我正在创建一个简单的 Roslyn 源代码生成器。 生成器似乎在调试中运行良好,正确生成了所需的 class。但是,当从解决方案中的另一个项目引用它时,它附近会显示一个红色图标,并带有“已忽略”工具提示,并且不会生成 output: 生成器代码非常简单:namespace Competences ...
长话短说;博士?:( 嗨,我正在创建一个源代码生成器,自从我开始 TBH 以来一直很痛苦。 我有一个 class:public class CsharpTypeBase { public CsharpTypeBase(int childCount = 0) { ch ...
我正在尝试使用特定的源代码生成器库进行试验,我想尝试修改其中的某些部分。 为此,克隆了该库的存储库,并从我自己的 .NET 7 项目中引用了其中的 two.csproj 文件。 这乍一看好像可行,VS Code 识别了导入并且没有抱怨,但实际的源代码生成器部分似乎不起作用。 我使用的特定库是Mapp ...
我有以下源代码生成器 然后在我使用源代码生成器的项目中,我有以下内容 但是如果我打破了Console.WriteLine(attribute); 并检查我得到以下attribute : 我如何找到错误是什么? 为什么 arguments 都不见了? 如果我使用不同的属性,如AssemblyFile ...
我能够分别找到测试分析器和源代码生成器的所有示例。 但是我的分析器厌倦了源代码生成器生成的属性。 如何在单个测试运行中组合源代码生成器和语法分析器? ...
我使用Injectio ,但在解析 MSBuild 属性时遇到问题。 这些也记录在源代码生成器说明书中。 我制作了一个简单的控制台应用程序作为最小的可重现示例,并最初将 Injectio 添加为 NuGet package 然后我将其替换为本地 Injectio 项目引用,这样它可以帮助我调试 MS ...
我的源代码生成器依赖于ProjectReference和Basic.Reference.Assemblies 。 生成器在我调试时工作,但当我编译一个使用生成器的项目时,它说: 我很确定我需要将 Dll 与分析器一起打包,但我无法让它工作。 我尝试在项目文件中设置依赖项,类似于 roslyn-sdk ...
我创建了一个创建 Api 控制器的 .Net 源代码生成器项目 (.Net 2.0)。 生成的控制器如下所示: ApiController 基类负责 api 装饰,如下所示: 我的主要项目是 Dotnet 7.0 Api。 问题是这个控制器没有出现在我的 swagger 文档中(其他手动创建的端点 ...
我正在做一个 C# 源代码生成器,我希望开发人员使用他将实现的指定接口来影响基于 class 的生成类型的 output。 该接口在名为Core.dll的项目中声明。namespace Core { public interface ITask { void Run ...
例如,我们有 Pure.DI 库可以生成快速的 DI 合成。 是否可以创建为 Pure.DI 生成器创建输入的生成器(基于某些属性或另一种元信息),然后确保 Pure.DI 基于我们生成器的 output 生成其内部代码? ...
我们正在使用源代码生成器从接口生成类。 这适用于非扩展接口。 但是,我们也有从另一个接口继承的接口,我们想创建一个包含两个接口属性的 class。 例子: 我们想要使用 Roslyn 源代码生成器生成的内容: 我们可以使用typeDeclarationSyntax.Members访问接口 Membe ...
我看到越来越多的开源库使用 .NET 5 的源代码生成器来提高它们的性能。 据我从文档中了解到的,它们旨在取代System.Reflection成为它以牺牲性能为代价。 真的吗? 我个人对源代码生成器的了解是,当他们在 .NET 5 引入它们时,它们的目的是根据 .proto 数据合同文件生成 C ...
我有一个.NET 6项目,我想要一些生成的文件 - 在“生成”文件夹结构中的某处 - 与它们的非生成等价物分组。 有关一些相关概念,请参见do.net/roslyn/issues/45645 。 您如何使用MSBuild实现此目的? 主要挑战包括: Map 所有已Generated\**\*.g ...
我正在使用增量生成器方法编写源代码生成器。 我想让开发人员能够有条件地生成一些额外的代码(例如,额外的注释、调试打印输出、生成的代码中的迂腐验证等),我希望这可以通过以下任一方式来控制: 通过使用我的源生成器将以下内容添加到项目的DefineConstants文件来.csproj :<Prop ...
我们正在探索 JINT,我们能够使用 C# 方法 map 运行时自定义 javascript。 但是,我只是很好奇,使用 .net 6 源发生器是否可以实现同样的效果? 比如写了一个javascript的方法,能不能用C#的方法来映射? 我对源生成器的理解在这里不正确吗? 任何意见或帮助将不胜感激 ...
我最近测试了 WPF UI 库 ( https://wpfui.lepo.co/ )。 我创建了一个示例项目,该项目针对 .NET 6.0。 示例项目包含一些基本模型和视图模型,在这些文件中我发现使用[ObservableProperty]属性声明的属性。 我真的很喜欢它如何减少简单属性所需的代码量 ...