Skip to content

CSharpier misreads .NET 10 file-based app #: directives (and shebang) as preprocessor directives - CS1024 #1646

@pomianowski

Description

@pomianowski

Hi! Loving CSharpier - thanks for making my code look sharp. I just hit a snag with the .NET 10 preview single-file script flow: the new #: file-level directives (and the shebang line) get treated as preprocessor directives, so CSharpier bails out with CS1024.

Input:

#!/usr/bin/dotnet run

// To run on Linux:
// chmod +x test.cs
// ./test.cs

#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.Playwright@1.*-*
#:package Microsoft.Playwright.TestAdapter@1.*-*

using Microsoft.Playwright;

Console.WriteLine("Starting Playwright...");

return;

Output (from csharpier auto-stimulation.cs):

csharpier format .\test.cs
Error .\test.cs - Failed to compile so was not formatted.
  (1,1): error CS1024: Preprocessor directive expected
  (7,1): error CS1024: Preprocessor directive expected
  (8,1): error CS1024: Preprocessor directive expected
  (9,1): error CS1024: Preprocessor directive expected
Formatted 1 files in 231ms.

Treat the #!/usr/bin/dotnet run shebang and each #: line (#:sdk, #:package, etc.) as the new file-level directives introduced for .NET 10 file-based apps, not as classic preprocessor directives.

Format the rest of the file normally without throwing CS1024.

Notes:

Feature details: “Announcing dotnet run app.cs – A simpler way to start with C# and .NET 10” (https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/).

Environment tested:

csharpier 1.0.3

Microsoft.AspNetCore.All 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 10.0.0-preview.5.25277.114 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 10.0.0-preview.5.25277.114 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 10.0.0-preview.5.25277.114 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Happy to provide extra logs or try experimental builds if it helps!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions