Skip to content

Broken formatting on Razor (cshtml) files with LF EOL #4503

@bryanjhv

Description

@bryanjhv

Issue Description

Razor (cshtml) file formatting breaks in a very strange way when using LF end of lines. Tested it and it doesn't happen if file is CRLF. It is independent of any BOM added to the file (tried adding one and get same behavior).

It only breaks inside @{}/@if/etc blocks, and sometimes the HTML too (don't have an example right now).

Steps to Reproduce

  1. Open any .cshtml file with Razor expressions (Index.cshtml from webapp template works).
  2. Change its end of line to LF and save it.
  3. Enable format on save.
  4. Modify the file (add a space or something).
  5. Save the file.

Expected Behavior

Formatting works fine regardless of any EOL setting.

Actual Behavior

Formatting breaks in a very weird way (adds a lot of spaces at the start, looks like it's duplicating them).

recording

Logs

OmniSharp log

Starting OmniSharp server at 4/17/2021, 7:12:58 PM
    Target: c:\Users\Bryan\Source\Repos\RazorPagesMovie

OmniSharp server started.
    Path: c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\OmniSharp.exe
    PID: 13120

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 1 MSBuild instance(s)
            1: StandAlone 16.9.0 - "c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to 'c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild\Current\Bin\MSBuild.exe'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 16.9.0 - "c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild\Current\Bin"
            CscToolExe = csc.exe
            CscToolPath = c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild\Current\Bin\Roslyn
            MSBuildExtensionsPath = c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild
            MSBuildToolsPath = c:\Users\Bryan\.vscode\extensions\ms-dotnettools.csharp-1.23.11\.omnisharp\1.37.8\.msbuild\Current\Bin
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in 'c:\Users\Bryan\Source\Repos\RazorPagesMovie'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.MSBuild.ProjectSystem
        No solution files found in 'c:\Users\Bryan\Source\Repos\RazorPagesMovie'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in 'c:\Users\Bryan\Source\Repos\RazorPagesMovie'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location 'c:\Users\Bryan\Source\Repos\RazorPagesMovie' on host 15972.
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Adding project 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Update project: RazorPagesMovie
[info]: OmniSharp.Roslyn.CSharp.Services.Diagnostics.CSharpDiagnosticWorkerWithAnalyzers
        Solution initialized -> queue all documents for code analysis. Initial document count: 14.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\Bryan\Source\Repos\RazorPagesMovie\RazorPagesMovie.csproj'.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.

C# log

(empty)

Environment information

VSCode version: 1.55.2
C# Extension: 1.23.11

Dotnet Information .NET SDK (reflecting any global.json): Version: 5.0.202 Commit: db7cc87d51

Runtime Environment:
OS Name: Windows
OS Version: 10.0.19042
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\5.0.202\

Host (useful for support):
Version: 5.0.5
Commit: 2f740adc14

.NET SDKs installed:
5.0.202 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download

Visual Studio Code Extensions
Extension Author Version
bracket-pair-colorizer-2 CoenraadS 0.2.0
compare-folders moshfeu 0.21.0
csharp ms-dotnettools 1.23.11
csharpextensions jchannon 1.3.1
dotenv mikestead 1.0.1
EditorConfig EditorConfig 0.16.4
html-css-class-completion Zignd 1.20.0
local-history xyz 1.8.1
msbuild-project-tools tintoy 0.3.15
path-intellisense christian-kohler 2.3.0
prettier-vscode esbenp 6.3.2
rest-client humao 0.24.5
roslynator josefpihrt-vscode 3.1.0
vscode-icons vscode-icons-team 11.4.0
vscode-todo-highlight wayou 1.0.4
vscodeintellicode VisualStudioExptTeam 1.2.12

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions