-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Logging source generator reruns code generation phase on keypress. #93309
Comments
Tagging subscribers to this area: @dotnet/area-extensions-logging Issue DetailsDescriptionSee more detail in #92914. Reproduction StepsCreate a project that uses Logging source generator. Observe it's execution pattern - either in the debugger or through ETW. Expected behaviorChanges unrelated to the logging code and it's type closure should not trigger regeneration of the logging source. Actual behaviorEvery change causes the entire pipeline to rerun. Regression?No Known WorkaroundsWe 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. <Target Name="_disableLoggingGeneratorInDesignTime" BeforeTargets="ResolveOffByDefaultAnalyzers">
<ItemGroup Condition="'$(DesignTimeBuild)' == 'true' OR '$(BuildingProject)' != 'true'">
<OffByDefaultAnalyzer Include="Microsoft.Extensions.Logging.Generators.dll"
IsEnabled="$(EnableLoggingGenerator)"/>
</ItemGroup>
</Target> ConfigurationNo response Other informationNo response
|
We discussed improving the incremental characteristics of the runtime source generators and scoped it out of 9.0 |
@ericstj Note: Maybe for design-time builds, the generator could generate minimal code (partial method definitions without implementation), which could be fast and incremental, and fixes IntelliSense. And for actual builds the implementation is generated. One potential consideration that I'm not sure about is, in what context does a build for EnC/HotReload happens? Is it a design-time build or non-design-time? |
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:
Configuration
No response
Other information
No response
The text was updated successfully, but these errors were encountered: