So came back to C# after several years. A lot has changed, still trying to recollect what I knew.
Using Visual Studio Pro Version 17.5.3. Created a new project and added Serilog for logging, but it wasn't working properly, so I am looking at their debug doc - https://github.com/serilog/serilog/wiki/Debugging-and-Diagnostics. The first code line
Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
Looks easy, passing a lambda to Enable
. And this works as is if I open the project in vscode, when I dotnet build
/ dotnet run
. Probably due to lack of auto-format configurations in vscode for now.
But Visual Studio seems to be formatting this line and is breaking the build
.
I have a "default" .editorconfig
generated at the solution level, and there's a rule in it - csharp_style_prefer_method_group_conversion = true:silent
. This seems to be refactoring the lambda to become as
Serilog.Debugging.SelfLog.Enable(Debug.WriteLine);
(notice it's removing the args, and then the build
fails because
Severity Code Description Project File Line Suppression State
Error CS1618 Cannot create delegate with 'System.Diagnostics.Debug.WriteLine(string?)' because it or a method it overrides has a Conditional attribute Library C:\Users\user\Work\C#\Library\Logger\Logger.cs 13 Active
I silenced the rule in .editorconfig
for now - changed it to false:silent
, but looking/hoping to understand how to solve it.
Are there any benefits to using a C# method group if available?
csharp_style_prefer_method_group_conversion