dotnet / roslyn

The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
https://docs.microsoft.com/dotnet/csharp/roslyn-sdk/
MIT License
18.92k stars 4.02k forks source link

Hot Reload unusable with CS8055 if a file created via "Move type to X.cs" is not touched by the user #72984

Open Rekkonnect opened 5 months ago

Rekkonnect commented 5 months ago

Version Used

VS 2022 Version 17.9.5 Roslyn 4.9.0 (a98c90d5645537)

Project info C# 12.0 .NET 8.0

Steps to Reproduce

  1. Create a file XYZ.cs that contains a type named XYZ
  2. Within that same file declare another type named ABC (different than XYZ)
  3. Use the "Move type to ABC.cs" code action
  4. Run the program with a debugger
  5. Pause execution at any point
  6. Edit any file within the assembly containing the above types (XYZ and ABC)
  7. Ensure that there are no compiler errors after the edits
  8. Use Hot Reload to load the changes onto the program and continue execution

Expected Behavior

Hot Reload works as expected, without any errors.

Actual Behavior

Hot Reload fails, and the following is observed in the output of Hot Reload:

19:44 51.27 [Error] E:\repos\[truncated]\File.cs (line 1): error CS8055: Cannot emit debug information for a source text without encoding.
19:44 51.27 Invalid changes were found. Please refer to the Error List window to fix those issues.

The user is prompted to edit the code or rerun the program anew, after Hot Reload fails.

The bug can be worked around by manually changing and saving changes to the ABC file before hot reloading, without stopping the current execution. Once the file is manually changed, hot reloading works.

danports commented 5 months ago

I've run into this so many times, probably because I have a tendency to add types wherever I feel like it and then use the move to separate file action later on. Thanks @Rekkonnect for the bug report & workaround!

palenshus commented 4 months ago

Wow, amazing job tracking down the repro mechanism for this!

theolivenbaum commented 4 months ago

Any updates on this? I hit this issue constantly on Visual Studio

FabianOswald-WolfSystem commented 2 months ago

Same her, Version 17.10.4

nathan130200 commented 1 month ago

Still not fix yet?

CyrusNajmabadi commented 1 month ago

@nathan130200 nope. but PRs welcome :)

Rekkonnect commented 1 month ago

Does this not need to have the "help wanted" label then?

CyrusNajmabadi commented 1 month ago

PRs always welcome. Help wanted is more like: better odds of this happening if you just do it :)