Open am11 opened 2 years ago
@Am11 As part of our move into the dotnet SDK, we reworked our options (see breaking changes listed in https://github.com/dotnet/format/issues/1292). The --folder
option is now under the whitespace
subcommand (dotnet whitespace --folder
). I am surprised there was no warning about using an invalid option against the root command.
@JoeRobich, thanks for the info. I am still lost on the why part; was the --folder
option conflicting with something in the SDK scenario?
Some non-whitespace rules we are using work fine with dotnet format --include *.cs --folder
:
[*.{cs,vb}]
# Organize usings
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
# IDE0005: Using directive is unnecessary.
# (this does not work with --folder, but it's fine,
# it just gets skipped in a non-fatal manner)
dotnet_diagnostic.IDE0005.severity = warning
now with .NET 6 SDK's dotnet format whitespcae --include *.cs --folder
, it has no effect since --folder has been stripped down to to a whitespace-only option.
@am11 The default dotnet format
command was expanded from only applying whitespace formatting to also applying code style and third-party analyzer fixes by default. Since the --folder
command has always been a whitespace-only option it was moved under the whitespace
subcommand.
You also got hit by another breaking change, the organize imports formatter was moved from a whitespace formatter to be a style formatter, since it was not whitespace related and was in fact enforcing a code style rule. There has been some discussion about possibly enabling the --folder
option to the subset of the code style formatting and fixing that does not require semantic information but, without hearing more feedback, it is not a priority.
CC: @jmarolf in case you have any thoughts
would need to understand if --folder
was used for performance or some other reason. If it was just performance then I would prefer to just make everything faster.
Yup, I'm mainly using it for performance because the default, project workspace, takes ages in large projects. :slightly_smiling_face:
As we're rolling out .NET 6 across our build infrastructure we got burned by this today.
We have a repository with over 1700 separate csproj files and around 800 SLN files. All told there's approximately 5.5 million LoC in the repo. To keep the entire repository in line we've been using an automated dotnet tool run dotnet-format --folder .
command on the root of the repo for automatically applying fixes to folk's pull requests. This workflow has worked great to keep things in check, especially as we have a well defined .editorconfig based on the Roslyn one with all of the rules written out.
It doesn't appear that there is any way to replicate the current 5.X folder functionality, as the --folder
option is only available for whitespace
and not style
.
@cliffchapmanrbx i am trying to solve the same issue as well. My current solution is create a custom github action find out what projects are involved in the change and use matrix to run dotnet format targeting those projects separately. I wonder what is your solution in the end?
Using the nightly (5 hours old) .NET SDK
6.0.100-rtm.21514.1
with bundled dotnet-format,--folder
option doesn't have any effect.with latest 5x (3 days old) downloaded from nuget.org, we get:
The expected behavior implemented by https://github.com/dotnet/format/pull/790.
Was it intentionally dropped out of .NET 6?