You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#增量源代码生成器无法运行且调试断点不触发的问题求助

C#增量源代码生成器无法运行且调试断点不触发的问题求助

我正在开发一个增量源代码生成器,用来给现有接口自动添加扩展函数,但现在遇到了棘手的问题:项目能正常完成编译构建的全流程,可生成器似乎完全没在运行——不仅我在初始化方法里加的Debugger.Launch()和Debugger.Break()根本没触发调试器附加提示,连预期的生成代码文件夹里也空无一物。

先说明我的项目结构:包含一个目标项目(就是想要用生成器增强的项目),和一个单独的源代码生成器项目,以下是具体配置和代码:

目标项目的.csproj配置

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
  <ImplicitUsings>enable</ImplicitUsings>
  <Nullable>enable</Nullable>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
  <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
<!--NugetPackages-->
<ItemGroup>
  <ProjectReference Include="..\..\SourceGeneration\SourceGenerator\SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
</ItemGroup>

源代码生成器项目的.csproj配置

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
    <OutputItemType>Analyzer</OutputItemType>
    <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
    <IsRoslynComponent>true</IsRoslynComponent>
    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
    <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\Generated</CompilerGeneratedFilesOutputPath>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.13.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" PrivateAssets="all" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\SourceGeneratorShared\SourceGeneratorShared.csproj" />
  </ItemGroup>
</Project>

增量生成器核心代码

[Generator]
public class InterfaceStuff : IIncrementalGenerator
{
    public void Initialize(IncrementalGeneratorInitializationContext context)
    {
        Debugger.Launch();
        Debugger.Break();

        var provider = context.SyntaxProvider.CreateSyntaxProvider(
            predicate: static (node, _) => IsTargetClass(node),
            transform: static (ctx, _) => GetTargetInfo(ctx))
            .Where(static info => info is not null).Collect();

        context.RegisterSourceOutput(provider, (ctx, collected) =>
        {
            foreach (var item in collected)
            {
                var source = GenerateSource(item!);
                ctx.AddSource($"{item.ClassName}.g.cs", SourceText.From(source, Encoding.UTF8));
            }
        });
    }
}

已尝试的排查手段和补充细节

  • 生成代码的文件夹已在预期路径创建,但内部无任何生成的.cs文件
  • 尝试过多种重建策略:修改两个项目代码后重建、清理整个解决方案再全量构建、提交代码后删除本地文件重新克隆构建,均无效果
  • 确认当前运行模式为Debug模式

有没有大佬能帮我看看哪里出问题了?或者还需要什么额外的信息可以随时问我!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:28:10