Skip to content

Logging source generator reruns code generation phase on keypress. #93309

Open
@ericstj

Description

@ericstj

Description

See more detail in #92914.

Reproduction Steps

Create a project that uses Logging source generator. Observe it's execution pattern - either in the debugger or through ETW.

Expected behavior

Changes unrelated to the logging code and it's type closure should not trigger regeneration of the logging source.

Actual behavior

Every change causes the entire pipeline to rerun.

Regression?

No

Known Workarounds

We haven't had reports of the performance here being a blocker, but that could be due to lack of use. The amount of work done on keypress will depend on whether or not the generator has work to do. If it has a lot of work to do, then it will be doing that work on every change.
 
Disable the logging generator from design-time builds (this will result in errors where the generator is used, which are design time only errors).
Workaround:

  <Target Name="_disableLoggingGeneratorInDesignTime" BeforeTargets="ResolveOffByDefaultAnalyzers">
    <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' OR '$(BuildingProject)' != 'true'">
      <OffByDefaultAnalyzer Include="Microsoft.Extensions.Logging.Generators.dll"
                            IsEnabled="$(EnableLoggingGenerator)"/>
    </ItemGroup>
  </Target>

Configuration

No response

Other information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions