Skip to content

Further improvements of EditAndContinueLanguageService.HasChangesAsync #61692

@tmat

Description

@tmat

#61690 replaced call to OOP with faster, in-proc check. The check is still async and may cause UI delays. We can improve upon this further and ideally make the check synchronous and not using Solution snapshot at all.

Now that we determined that skipping change application during break state is sound, we can perform much faster check (heuristic) that only inspect readily available in-proc solution state. Ideally, we would avoid using solution snapshot entirely for this implementation, but that turns out to be tricky. We could, for example, track changes to open files that belong to Roslyn and ignore changes that were made outside of VS. However, determining whether a file belongs to Roslyn (i.e. can affect compilation) is not straightforward as it depends on data coming from the project system (especially for additional files, which can have arbitrary extension). In future we might want to investigate this approach further.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions