Skip to content

Bump the silk3_deps group with 28 updates#102

Open
dependabot[bot] wants to merge 1 commit intodevelop/3.0from
dependabot/nuget/dot-config/develop/3.0/silk3_deps-986a742b19
Open

Bump the silk3_deps group with 28 updates#102
dependabot[bot] wants to merge 1 commit intodevelop/3.0from
dependabot/nuget/dot-config/develop/3.0/silk3_deps-986a742b19

Conversation

@dependabot
Copy link
Copy Markdown

@dependabot dependabot bot commented on behalf of github Apr 14, 2026

Updated BenchmarkDotNet from 0.13.12 to 0.15.8.

Release notes

Sourced from BenchmarkDotNet's releases.

0.15.8

This release adds OpenMetrics exporter support for Prometheus-compatible metrics export, improves the Roslyn analyzers with multi-target support and better type checking, and fixes several bugs including process deadlocks and WASM trimming issues.

Features

  • Add OpenMetrics exporter for Prometheus-compatible metrics output (#​2801)
  • Add Job info to DisassemblyDiagnoser report headers to distinguish assemblies when using multiple coreruns (#​2884, fixes #​2573)
  • Add NO_COLOR environment variable support for disabling console colors (#​2870)

Improvements

  • Multi-target analyzers with improved type assignability checking using semantic model (#​2866)
  • Add new analyzer diagnostic BDN1503 for better argument/params validation (#​2865, fixes #​2864)
  • Use PolySharp for [DynamicallyAccessedMembers] attribute polyfill (#​2883)
  • Refactor to use AsyncProcessOutputReader for cleaner process output handling (#​2878)

Bug Fixes

  • Fix process deadlock issue when reading process output (#​2877)
  • Fix WASM generated project being trimmed out (#​2872)
  • Allow filters to filter out every benchmark from a type without errors (#​2879, fixes #​2860)
  • Fix unhandled exception when running BenchmarkRunner.Run<T>() with arguments on invalid benchmark type (#​2880, fixes #​2724)

Internal

  • Update release workflow for analyzers (#​2882)
  • Improve docs building workflow
  • Cleanup #if-#endif preprocessor directives using PolySharp polyfills (#​2881)

Full Changelog: dotnet/BenchmarkDotNet@v0.15.7...v0.15.8

0.15.7

This release introduces Roslyn analyzers to catch incorrect BenchmarkDotNet usage at compile time, improves .NET Framework version detection, and updates OS detection support.

Features

  • Add Roslyn analyzers to detect incorrect usage of BenchmarkDotNet at compile-time (#​2837)
    • Validates benchmark class structure (public, non-sealed, generic constraints)
    • Checks [Arguments], [Params], and [ParamsAllValues] attribute usage
    • Verifies [GenericTypeArguments] requirements
    • Ensures only one baseline method per category
    • Validates BenchmarkRunner.Run invocations

Improvements

  • Improve .NET Framework version detection by retrieving version from TargetFrameworkAttribute (#​2682)
  • Bump Perfolizer 0.6.0 → 0.6.1, bringing updated Windows and macOS version detection in OsBrandHelper

Bug Fixes

  • Fix null reference handling and exception logging in TestCaseFilter for the test adapter
  • Fix flaky CI tests by increasing build timeout values (#​2854)

Internal

  • Improve release workflow in release.yaml

Full Changelog: dotnet/BenchmarkDotNet@v0.15.6...v0.15.7

0.15.6

v0.15.6

This release adds ref struct parameter support for [ArgumentsSource], fixes Native AOT runtime moniker resolution, and upgrades to Perfolizer 0.6.0 with the new Pragmastat statistical engine.

Features

  • Add ref struct parameter support for [ArgumentsSource] attribute, enabling Span<T> and ReadOnlySpan<char> parameters (#​2849)

Bug Fixes

  • Fix runtime moniker normalization for Native AOT targets (#​2852)

Improvements

  • Upgrade to Perfolizer 0.6.0 with Pragmastat statistical engine integration

Documentation

  • Add documentation for breaking changes related to disassembler native dependencies (#​2836)

Internal

  • Introduce GitHub Actions release workflow

Full Changelog: dotnet/BenchmarkDotNet@v0.15.5...v0.15.6

0.15.5

This release fixes job naming consistency when using --runtimes, clamps histogram bin bounds to avoid confusing negative values, and reduces output directory clutter by filtering unnecessary runtime and satellite assembly files.

Features

  • Add custom MSBuild targets to remove unnecessary files from the bin directory (#​2737)
    • Filters out Capstone native binaries for non-target platforms
    • Removes satellite assemblies from Microsoft.CodeAnalysis packages

Bug Fixes

  • Fix job names consistency between SimpleJobAttribute and --runtimes CLI option (#​2841)
    • Jobs now use runtime names as IDs consistently across all runtime monikers
  • Clamp histogram bin lower bounds to non-negative values (#​1821)
    • Prevents confusing negative values in histogram output for non-negative measurements

Internal

  • Bump Perfolizer: 0.5.3 → 0.5.4 (#​2773)
  • Update changelog and GitHub Pages generation workflows
  • Enable workflow_dispatch for test workflow (#​2835)

Full Changelog: dotnet/BenchmarkDotNet@v0.15.4...v0.15.5

0.15.4

This release fixes issues with ParamsSource attribute resolution in inheritance scenarios and corrects a MSBuild syntax error in the TestAdapter.

Bug Fixes

  • Allow [ParamsSource] to resolve overridden methods and properties in derived classes (#​2832)
  • Fix MSBuild condition syntax for TestTfmsInParallel property that prevented Visual Studio from loading projects (#​2831)

Full Changelog: dotnet/BenchmarkDotNet@v0.15.3...v0.15.4

0.15.3

This release brings .NET 10 NativeAOT instruction set support, improved CPU detection on Windows when WMIC is unavailable, test adapter filtering, and numerous bug fixes.

Breaking Changes

  • Deprecated .WithNuget() job extension in favor of .WithMsBuildArguments() (#​2812)

Features

  • Add VS Test Adapter filter support for running specific benchmarks (#​2788)
  • Update NativeAOT instruction set support for .NET 10+ (#​2828)

Improvements

  • Add PowerShell-based CPU detection fallback for Windows when WMIC is unavailable (#​2749)
  • Improve IsNetCore and IsNativeAOT detection for single-file apps without AOT (#​2799)
  • Use --nodeReuse:false for dotnet CLI commands to improve build isolation (#​2814)
  • Enable assembly signing for debug builds (#​2774)

Bug Fixes

  • Fix ArgumentsSource on external types not working if the argument type is not primitive (#​2820)
  • Fix workload warmup mode not working correctly
  • Fix EtwProfiler for file paths slightly under 260 characters (#​2808)
  • Fix console logs being output twice when using TestAdapter (#​2790)
  • Fix EventProcessor.OnEndValidationStage not being called when critical validation errors occur (#​2816)
  • Fix XmlException thrown when TextReader.Null is passed to AppConfigGenerator (#​2817)
  • Fix case sensitivity issue in NativeMemoryLogParser program name matching (#​2795)
  • Fix typo in BuildPlots.R

Internal

  • Replace StyleCop.Analyzers with unstable version for improved analysis (#​2796)
  • Add workflow to run selected tests (#​2797)
  • Fix flaky MemoryDiagnoser tests on macOS (#​2813)
  • Fix x86 disassembler tests for net462 (#​2792)
  • Split TimeConsumingBenchmark class to reduce test time
  • Update BenchmarkDotNetDiagnosers package version (#​2805)
  • Fix comment in package props about GenerateProgramFile (#​2802)

Full Changelog: dotnet/BenchmarkDotNet@v0.15.2...v0.15.3

0.15.2

This release improves memory allocation measurement accuracy and adds new features for job ordering and runtime validation.

Features

  • Add JobOrderPolicy option to sort jobs in numeric order instead of ordinal order (#​2770)
  • Add RuntimeValidator to detect benchmarks with null runtime configuration (#​2771)

Improvements

  • Improve memory diagnoser accuracy with better allocation measurement isolation, warm-up phase, and handling of tiered JIT (#​2562)

Bug Fixes

  • Auto-generate unique job IDs between benchmark runs to prevent ID collisions
  • Skip null runtime validation for in-process toolchain (#​2780)
  • Fix flaky memory allocation test (#​2782)
  • Fix benchmark test adapter enumeration issues (#​2766)

Internal

  • Modify macOS runner image for CI (#​2775)
  • Add setting to skip test reports when original workflow is cancelled (#​2772)
  • Suppress xunit non-serializable data warnings (#​2769)
  • Enable --force-clone for docs-fetch in generate-gh-pages workflow
  • Allow workflow_dispatch for publish-nightly workflow
  • Enhance docs-fetch command with additional options
  • Remove docs/_changelog folder from main branch (migrated to docs-changelog branch)

Full Changelog: dotnet/BenchmarkDotNet@v0.15.1...v0.15.2

0.15.1

A maintenance release with improved cross-platform compatibility, a new feature for referencing external types in source attributes, and several bug fixes for ARM CPUs and unsupported operating systems.

Features

  • Allow [ArgumentsSource] and [ParamsSource] to reference methods in other types via new constructor overload: [ArgumentsSource(typeof(MyClass), nameof(MyClass.Values))] (#​2748)

Bug Fixes

  • Fix WakeLock P/Invoke compatibility with ARM CPUs by refactoring REASON_CONTEXT to use proper union structure (#​2745, #​2756)
  • Fix Console.CancelKeyPress crash on platforms that don't support it (Android, iOS, tvOS, WASM) (#​2739, #​2741)
  • Fix CPU detection crash on unsupported operating systems by returning CpuInfo.Unknown (#​2740)
  • Support .slnx solution file format when searching for solution files (#​2764)

Improvements

  • Bump Perfolizer: 0.5.2 → 0.5.3
  • Make ExporterBase.GetArtifactFullName accessibility modifier more permissive

Internal

  • Update .NET SDK version to 8.0.410 (#​2762)
  • Update Microsoft.NET.Test.Sdk and other package dependencies (#​2750, #​2755)
  • Rework changelog generation to use docs-changelog branch (#​93d12c42)
  • Fix line-endings to LF in several files
  • Update GitHub Actions workflows

Full Changelog: dotnet/BenchmarkDotNet@v0.15.0...v0.15.1

0.15.0

BenchmarkDotNet v0.15.0 brings .NET 10 support, a new WakeLock feature to prevent system sleep during benchmarks, improved engine internals for more consistent measurements, and numerous bug fixes and improvements.

Features

  • WakeLock support: New [WakeLock] attribute and --wakeLock CLI option to prevent the system from entering sleep mode while benchmarks are running (#​2670)
  • .NET 10 support: Added RuntimeMoniker.Net10, NativeAot10, and Mono10 with full toolchain support (#​2642)
  • Box plots in ScottPlotExporter: New box plot visualization for benchmark results with improved font sizing
  • RiscV64 platform support: Added Platform.RiscV64 for RISC-V 64-bit architecture (#​2644, #​2647)
  • Required properties support: Benchmark classes can now use C# 11 required properties (#​2579)
  • HostSignal.AfterProcessStart: New signal allows diagnosers to obtain the process ID of a benchmark process started in suspended state (#​2674)
  • Parallel build control: New ConfigOptions.DisableParallelBuild option to force sequential builds (#​2725)
  • Auto-hide empty metric columns: ThreadingDiagnoser and ExceptionDiagnoser now support configuration to hide columns when metrics have no values (#​2673)
  • Measurements in DiagnoserResults: Custom diagnosers can now access measurements for calculations (#​2731)

Improvements

  • Constant stack size engine refactoring: Engine stages refactored to use IEngineStageEvaluator for more consistent instruction location and simpler code (#​2688)
  • Use ArtifactsPath instead of IntermediateOutputPath: Improved build artifact handling for SDK 8+ (#​2676)
  • InProcessNoEmitRunner NativeAOT support: Basic support for running InProcessNoEmitRunner with NativeAOT (#​2702)
  • Allow ParamsAttribute values from derived classes: ParamsAttribute.Values setter is now protected instead of private (#​2716)
  • Updated clrmd to 3.1: Disassembler now uses ClrMdV3Disassembler (#​2488)
  • Updated ScottPlot to 5.0.54: Plotting exporter updated to latest ScottPlot version (#​2709)
  • Perfolizer upgraded to 0.5.2: CPU/OS detection logic moved to Perfolizer with new Perfonar exporters replacing Phd exporters
  • Log warnings for empty benchmarks: Clear warning messages when running benchmarks that match no methods (#​2718)
  • Validation for sealed benchmark classes: Compiler now warns when benchmark classes are sealed (#​2660)
  • Improved baseline warning message: More descriptive warning when baseline benchmarks are misconfigured (#​2650)

Bug Fixes

  • Fix async GlobalSetup/GlobalCleanup with InProcessEmit: Async setup and cleanup methods are now properly awaited (#​2109)
  • Fix Windows path too long: Handle Windows MAX_PATH limitations in build paths (#​2681)
  • Fix builds with --keepFiles: Include auto-incremented ID in build artifacts directory to avoid conflicts (#​2423)
  • Fix Ctrl-C handling: System state (power management, console title) is now properly reverted on process termination (#​2483, #​2661)
  • Fix dotnet command failure detection: Commands now always fail when dotnet returns non-zero exit code (#​2535)
  • Fix deadlock in GetDotNetSdkVersion: Resolved potential deadlock in SDK version detection (#​2622)
  • Fix lscpu CPU frequency parsing: Corrected frequency parsing from lscpu output
  • Make lscpu call language-invariant: CPU detection now works correctly regardless of system locale (#​2577)
  • Clean up unsupported Native AOT flags: Removed obsolete IlcGenerateCompleteTypeMetadata and updated flag names (#​2616)
  • Native AOT projects copy SettingsWeWantToCopy: Build settings are now properly propagated (#​2665)

Breaking Changes

  • Removed ConfigCompatibilityValidator: No longer validates config compatibility between runs (#​2599)
  • Phd exporters renamed to Perfonar: [PhdExporter][PerfonarExporter], PhdJsonExporterPerfonarJsonExporter, PhdMdExporterPerfonarMdExporter
  • Removed netstandard1.0 target from Annotations package: Minimum target is now netstandard2.0

Documentation

  • Added Visual Studio Profiler documentation with samples (#​2672)
  • Added WakeLock documentation and samples (#​2670)
    ... (truncated)

0.14.0

Full changelog: https://benchmarkdotnet.org/changelog/v0.14.0.html

Highlights

  • Introduce BenchmarkDotNet.Diagnostics.dotMemory #​2549: memory allocation profile of your benchmarks using dotMemory, see @​BenchmarkDotNet.Samples.IntroDotMemoryDiagnoser
  • Introduce BenchmarkDotNet.Exporters.Plotting #​2560: plotting via ScottPlot (initial version)
  • Multiple bugfixes
  • The default build toolchains have been updated to pass IntermediateOutputPath, OutputPath, and OutDir properties to the dotnet build command. This change forces all build outputs to be placed in a new directory generated by BenchmarkDotNet, and fixes many issues that have been reported with builds. You can also access these paths in your own .csproj and .props from those properties if you need to copy custom files to the output.

Bug fixes

  • Fixed multiple build-related bugs including passing MsBuildArguments and .Net 8's UseArtifactsOutput.

Breaking Changes

  • DotNetCliBuilder removed retryFailedBuildWithNoDeps constructor option.
  • DotNetCliCommand removed RetryFailedBuildWithNoDeps property and BuildNoRestoreNoDependencies() and PublishNoBuildAndNoRestore() methods (replaced with PublishNoRestore()).

Commits viewable in compare view.

Updated ClangSharp.PInvokeGenerator from 17.0.1 to 20.1.2.1.

Release notes

Sourced from ClangSharp.PInvokeGenerator's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated coverlet.collector from 6.0.2 to 8.0.1.

Release notes

Sourced from coverlet.collector's releases.

8.0.1

Fixed

  • Fix [BUG] TypeInitializationException when targeting .NET Framework #​1818
  • Fix [BUG] coverlet.MTP build fails with CS0400 due to developmentDependency=true #​1827

Improvements

  • Additional improvements needed for .NET Framework instrumentation type import #​1825

Diff between 8.0.0 and 8.0.1

8.0.0

Special Thanks: A huge thank you to @​Bertk for driving the majority of the work in this release! 🎉

Fixed

Improvements

  • Coverlet MTP extension feature #​1788
  • Generate SBOM for nuget packages #​1752
  • Use multi targets projects for coverlet.collector, coverlet.msbuild.tasks packages #​1742
  • Use .NET 8.0 target framework for coverlet.core and remove Newtonsoft.Json #​1733
  • Use latest System.CommandLine version #​1660
  • Upgraded minimum required .NET SDK and runtime to .NET 8.0 LTS (Long Term Support) (Breaking Change)
  • Use xunit.v3 for tests and example code

Diff between 6.0.4 and 8.0.0

6.0.4

Fixed

  • Fix empty coverage report when using include and exclude filters #​1726

Diff between 6.0.3 and 6.0.4

6.0.3

Fixed

Improvements

  • Cache the regex used in InstrumentationHelper #​1693
  • Enable dotnetTool integration tests for linux #​660

Diff between 6.0.2 and 6.0.3

Commits viewable in compare view.

Updated csharpier from 0.28.2 to 1.2.6.

Release notes

Sourced from csharpier's releases.

1.2.6

What's Changed

[Bug]: XML with DOCTYPE results in "invalid xml" warning #​1809

CSharpier was not formatting xml that included a doctype and instead reporting that it was invalid xml.

<?xml version="1.0"?>
<!DOCTYPE staff SYSTEM "staff.dtd"[
    <!ENTITY ent1 "es">
]>
<staff></staff>

[Bug]: Initializing a span using stackalloc leads to different formatting compared to new #​1808

When initializing a spacn using stackalloc, it was not being formatting consistently with other code

// input & expected output
Span<int> metatable = new int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

Span<int> metatable = stackalloc int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

// 1.2.5
Span<int> metatable = new int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

Span<int> metatable =
    stackalloc int[] {
        00000000000000000000000001,
        00000000000000000000000002,
        00000000000000000000000003,
    };

[Bug]: Comments in otherwise empty object pattern disappear when formatting #​1804

CSharpier was removing comments if they were the only content of an object pattern.

// input & expected output
var match = obj is {
    //Property: 123
 ... (truncated)

## 1.2.5

## What's Changed
### Performance issue when running CLI in project with pnpm on Windows [#​1781](https://github.com/belav/csharpier/issues/1781)
**1.2.4 did not properly address this**

The code to determine if there is a version of CSharpier.MsBuild referenced that does not match the version of CSharpier being run has been optimized to not look in node_modules or .git. This significantly speeds things up in some setups.


**Full Changelog**: https://github.com/belav/csharpier/compare/1.2.4...1.2.5

## 1.2.4

# 1.2.4
## What's Changed
### Weird enter in closing when formatting XAML TextBlock [#​1785](https://github.com/belav/csharpier/issues/1785)
CSharpier was breaking an end element to a new line when it did not need to.
```xml
<!-- input & expected output -->
<root>
  <TextBlock Foreground="DarkGray">
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
  <TextBlock>
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
</root>

<!-- 1.2.3 -->
<root>
  <TextBlock Foreground="DarkGray">
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock
  >
  <TextBlock>
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
</root>

Order Modifiers (IDE0036) not formatting when code is preceded by a comment. #​1784

When incorrectly ordered modifiers were preceded by a comment they were not being reordered. Thanks go to @​TimothyMakkison for the contribution

// input & 1.2.3

// Comment
required public int Prop1 { get; set; }

// expected output
// Comment
public required int Prop1 { get; set; }

Performance issue when running CLI in project with pnpm on Windows #​1781

The code to determine if there is a version of CSharpier.MsBuild referenced that does not match the version of CSharpier being run has been optimized to not look in node_modules or .git. This significantly speeds things up in some setups.

Full Changelog: belav/csharpier@1.2.3...1.2.4

1.2.3

What's Changed

Large directories ignored in .gitignore significantly impact performance. #​1776

CSharpier was enumerating all files within all subdirectories and then determining if they should be formatted or not. That logic was optimized to only enumerate files in directories that are not ignored.

Full Changelog: belav/csharpier@1.2.2...1.2.3

1.2.2

What's Changed

The null coalescing operator is grouped in an unexpected place #​1769

Null coalescing is now consistently broken thanks to a contribution from @​ogaken-1

// input & expected output
var x =
    someValue.SomeCall().SomeProperty.SomeProperty
    ?? someValue.SomeCall().SomeProperty.SomeProperty;

var x =
    someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty
    ?? someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty;

var x =
    someValue.SomeCall().A_______.B_______.C_______
    ?? someValue.SomeCall().A_______.B_______.C_______;

// 1.2.1
var x =
    someValue.SomeCall().SomeProperty.SomeProperty ?? someValue
        .SomeCall()
        .SomeProperty.SomeProperty;

var x =
    someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty ?? someValue
        .SomeCall()
        .SomeProperty?.SomeCall()
        .SomeProperty;

var x =
    someValue.SomeCall().A_______.B_______.C_______ ?? someValue
        .SomeCall()
        .A_______.B_______.C_______;

Xml formatter should not add a second line #​1760

When formatting an xml file with a declaration and extra blank line was being added.

<!-- input & expected output -->
<?xml version="1.0" encoding="utf-8"?>

<Element />

<!-- 1.2.1 -->
<?xml version="1.0" encoding="utf-8"?>


<Element />

... (truncated)

1.2.1

What's Changed

Multiline comments are now formatted in a single line in XML format #​1747

The 1.2.0 release was combining xml comments into a single line.

<!-- input & expected output -->
<Root>
  <!-- This is the first line comment-->
  <!-- This is the second line of my comment-->
</Root>

<!-- 1.2.0 -->
<Root>
  <!-- This is the first line comment--><!-- This is the second line of my comment-->
</Root>

Full Changelog: belav/csharpier@1.2.0...1.2.1

1.2.0

What's Changed

Custom XML Parser #​1679

CSharpier now has a custom xml parser. XmlDocument and XDocument do not provide the original white space or the original attribute values from the file that was parsed which blocked the ability to implement supporting keeping empty new lines and not automatically encoding attributes.

Support for keeping empty lines in xml files #​1599

CSharpier now supports keeping a single empty line between elements in xml files. It will remove any initial or trailing empty lines.

<!-- input -->
<Root>

  <Element />


  <Element />

</Root>

<!-- expected output -->
<Root>
  <Element />

  <Element />
</Root>

<!-- 1.1.2 -->
<Root>
  <Element />
  <Element />
</Root>

Xml - don't automatically encode attribute values #​1610

CSharpier will no longer encode attribute values. It will leave them encoded if they are supplied that way.

<!-- input & expected output -->
<Target Name="Transform" BeforeTargets="Build">
  <Message Importance="high" Text="@(MyItems->'MyItems has %(Identity)', ', ')" />
</Target>

<!-- 1.1.2 -->
<Target Name="Transform" BeforeTargets="Build">
  <Message Importance="high" Text="@(MyItems-&gt;'MyItems has %(Identity)', ', ')" />
</Target>

Add option to all integrations to report incorrect formatting as a warning instead of error #​1687

Formatting "using" import split on multiple lines requires formatting it twice to get the expected result #​1698

When a using contained a newline before the namespace it was not being sorted properly.

// input
using System.Net;
using
 ... (truncated)

## 1.1.2

## What's Changed
### Inconsistencies with null-coalescing wrapping on method chains [#​1573](https://github.com/belav/csharpier/issues/1573)
On longer method chains, depending on the exact chain a null coalescing expression wouldn't always be preceded by a new line.

```c#
// input & expected output
var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallMethod__________()
    ?? throw new Exception();

var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallLongMethod___________________________________________________()
    ?? throw new Exception();

// 1.1.1
var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallMethod__________() ?? throw new Exception();

var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallLongMethod___________________________________________________()
    ?? throw new Exception();

Full Changelog: belav/csharpier@1.1.1...1.1.2

1.1.1

What's Changed

Unhandled exception: System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string. (Parameter 'startIndex') #​1673

CSharpier was throwing an exception when formating a directory contained a file without an extension.

1.1.0

What's Changed

.gitignore from parent folders impacts formatting of children #​1627

CSharpier will no longer consider .gitignore files located above the root of the current git repository.

Changes to stdin formatting #​288 #​1657

There is a new option --stdin-filepath that is used to specify the filepath CSharpier should use for resolving options and ignore files.
When no path is specified via stdin-path

  • No ignore files are considered.
  • The current directory is considered when locating options
  • The file is assumed to be c# unless the first non-whitespace character is < in which case it is assumed to be xml.

Support for C# 14 and .NET 10 #​1654 #​1646

Changes were required to support the following

  • Extension Declarations
  • File level directives in file based C# Apps

Support --ignore-path CLI option #​1585

It is now possible to specify the path to an ignore file

dotnet csharpier format . --ignore-path .config/.csharpierignore

Format xaml and slnx by default #​1628 #​1604

CSharpier now formats xaml and slnx by default without the need for configuration changes.

XML formatting is not taking into account EOL configuration on multiline comments #​1660

When formatting the following XML, CSharpier would always use the system system default for ending lines within the comment instead of the respecting the configured EOL setting.

<Element>
  <!--
  Comment with EOL
  -->
</Element>

Error when no read access to intermediate containing folder #​1656

In the case that CSharpier had access to a sub directory but not the parent of that sub directory, it was failing with an exception. That has been resolved.

Misleading message after "csharpier check" #​1645

Previously the format and check commands both used the same output message. The check command now correctly reports that it checked files and did not format them.

# 1.0.3
dotnet csharpier check .
Formatted 13226 files in 21986ms.

# 1.1.0
dotnet csharpier check .
Checked 13226 files in 21986ms.

Multiline collection expressions should not be indented #​1635

CSharpier now formats collection expressions consistently when they are in a property

// input & expected output
public class ClassName
{
    public SomeObject LongValue = new
 ... (truncated)

## 1.0.3

## What's Changed
### Switch block case with conditionals adding newlines [#​1630](https://github.com/belav/csharpier/issues/1630)
Switch blocks were breaking on conditions within patterns.
```c#
// input and expected output
switch ("")
{
    case "" or "":
        break;
}

// 1.0.2
switch ("")
{
    case ""
    or "":
        break;
}

switch expression formatting adds odd newlines #​1620

CSharpier was breaking after a discard with a when, resulting in extra new lines

// input and expected output
_ = someValue switch
{
    _ when KeepWhenWithDiscard() => "",
    _ when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "",
    _ when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "LongString_____________________________________________________________________",
};

// 1.0.2
_ = someValue switch
{
    _ when KeepWhenWithDiscard() => "",
    _
        when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "",
    _
        when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "LongString_____________________________________________________________________",
};

multi-line raw string in linq query causes a subsequent linq query to be printed on one line #​1617

... (truncated)

1.0.2

What's Changed

Performance issues when supporting .gitignore. #​1588

CSharpier was using a naive algorithm for parsing and evaluating gitignore rules that caused significant perfomance issues. @​kevinboss reworked the implementation to drastically increate performance.

Exclude bin/ and obj/ directory content from xml formatting #​1600

CSharpier now excludes all files in bin/ and obj/ by default.

Error on syntactically valid conditional with is #​1612

The following c# is valid and compiles with 9.0.300+. CSharpier was updated to properly parse it.

var x = y is y ? [] : z ?? [];

Xml formatting with comments in text element inserts extra new lines #​1607

CSharpier has some issues with formatting text that contained xml comments. That has been improved.

Input & expected output

<NoWarn>
  CA1031; <!-- Since this is not a library project, catching general exceptions is OK -->
  IDE0005; <!-- Allow unused usings -->
</NoWarn>

1.0.1

<NoWarn
    >
      CA1031;
    <!-- Since this is not a library project, catching general exceptions is OK -->

    
      IDE0005;
    <!-- Allow unused usings -->
</NoWarn>

Inconsistent formatting of single-line lambda expressions #​1594

CSharpier 1.0.0 introduced a regression that caused the following formatting. This is now working as expected.

// input & expected output
        CallMethod(() => CallAnotherMethod______________________________________________________());
        CallMethod(() =>
            CallAnotherMethod______________________________________________________1()
        );
        CallMethod(() =>
            CallAnotherMethod______________________________________________________12()
        );
        CallMethod(() =>
            CallAnotherMethod______________________________________________________123()
        );

// 1.0.0
 ... (truncated)

## 1.0.1

## What's Changed
### CSharpier's support for .gitignore is causing performance issues [#​1584](https://github.com/belav/csharpier/issues/1584)
The support for `.gitignore` has some major performance problems when there are a large number of `.gitignore` files and/or ignore rules. The feature has been disabled for now until it can be fixed.
### CSharpier.MsBuild issues [#​1586](https://github.com/belav/csharpier/issues/1586)
CSharpier.MsBuild was not properly logging errors when performing a formatting check. This would result in the build passing when files were not formatted.
Setting `CSharpier_LogLevel` was passing an invalid parameter of `--loglevel` to CSharpier, resulting in a build failure


**Full Changelog**: https://github.com/belav/csharpier/compare/1.0.0...1.0.1

## 1.0.0

## Major Changes
### Support for formatting XML [#​819](https://github.com/belav/csharpier/issues/819)
CSharpier now formats xml files by default. It will try to format ".csproj", ".props", ".targets", ".xml", ".config" as if they were xml. \
If a file is not valid xml it will be treated as a warning. \
The default indent size is `2` instead of `4`

### Performance Improvements
@​TimothyMakkison put a lot of effort into improving the performance of CSharpier. These benchmark numbers show drastic improvement for both speed and memory usage.

Baseline
Method Mean Error StdDev Median Gen0 Gen1 Gen2 Allocated
Default_CodeFormatter_Tests 233.3 ms 4.63 ms 8.23 ms 229.7 ms 11000.0000 4000.0000 1000.0000 101.41 MB
Default_CodeFormatter_Complex 433.7 ms 8.53 ms 7.56 ms 433.4 ms 20000.0000 5000.0000 1000.0000 182.44 MB

After Improvements
Method Mean Error StdDev Gen0 Gen1 Allocated
Default_CodeFormatter_Tests 64.72 ms 0.548 ms 0.512 ms 1666.6667 1000.0000 18.33 MB
Default_CodeFormatter_Complex 137.83 ms 2.730 ms 4.708 ms 3000.0000 1000.0000 30.78 MB
## Breaking Changes
### ConfigurationFile - rename TabWidth to IndentSize [#​1377](https://github.com/belav/csharpier/issues/1377)
In order to get consistency between an `.editorconfig` and `.csharpierconfig` the option `TabWidth` has been renamed to `IndentSize`. This is also a more accurate name considering by default indentation is done with spaces and not tabs.
### Rework the CLI to use commands and arguments. [#​1321](https://github.com/belav/csharpier/issues/1321)
The CLI has been reworked to use commands. This helps make it clear which arguments apply to which commands. The two common commands are below, see https://csharpier.com/docs/CLI for more details.

dotnet csharpier format .
dotnet csharpier check .

### Changing the tool command to csharpier. Changing the assembly/exe to CSharpier [#​1418](https://github.com/belav/csharpier/pull/1418)
Prior to `1.0.0` the tool command was `dotnet-csharpier` and assembly/exe were named `dotnet_csharpier`. 
The tool command name was changed to just `csharpier`
- Running a local tool remains the same `dotnet csharpier --version`
- Running a global tool is changed to `csharpier --version`

The assembly/exe names have changed to just `CSharpier`

### Support for ignoring files via a .gitignore [#​631](https://github.com/belav/csharpier/issues/631)
CSharpier now works as follows when determining if a file should be ignored.

- .gitignore files are considered when determining if a file will be ignored. A .gitignore file at the same level as a given file will take priority over a .gitignore file above it in the directory tree.
- If a .csharpierignore file is present at the same level or anywhere above the given file in the tree and it contains a pattern for a given file, that will take priority.
- The patterns within .csharpierignore work the same as a .gitignore, with patterns lower in the file taking priority over patterns above
- CSharpier does not currently look further up the directory tree for additional .csharpierignore files if it finds one. But it does look for .gitignore files. If there is demand this could be added later.
## What's Changed
 ... (truncated)

## 0.30.6

## What's Changed
### Trailing comma is placed on new line if last enum value is followed by a comment [#​1429](https://github.com/belav/csharpier/issues/1429)
```c#
// input
enum MyEnum
{
    First,
    Second // the second value
}

// 0.30.5
enum MyEnum
{
    First,
    Second // the second value
    ,
}

// 0.30.6
enum MyEnum
{
    First,
    Second, // the second value
}

Full Changelog: belav/csharpier@0.30.5...0.30.6

0.30.5

What's Changed

Extra blank line added to file each time csharpier runs on this file #​1426

When a file ended in a comment and that comment had multiple blank lines before it, a new blank line was being added each time it was formatted.
// input

// input
namespace MyCompany.MyNamespace;


// Comment block

// 0.30.4
namespace MyCompany.MyNamespace;



// Comment block

// 0.30.5
namespace MyCompany.MyNamespace;

// Comment block

**Full Changelog**: https://github.com/belav/csharpier/compare/0.30.4...0.30.5

## 0.30.4

# 0.30.4
## What's Changed
### Formatting deletes `unsafe` modifier [#​1416](https://github.com/belav/csharpier/issues/1416)
Formatting a using directive with an unsafe modifier resulted in the lose of the unsafe keyword
```c#
// input & expected output
using unsafe NvapiQueryInterface = delegate* unmanaged[Cdecl]<uint, nint>;

// 0.30.3
using NvapiQueryInterface = delegate* unmanaged[Cdecl]<uint, nint>;

CSharpier keeps adding a newline every time a file is formatted #​1408

In some cases if a file ended with a comment, CSharpier would add a new extra blank line above the comment each time it formatted the file

// input & expected outpet
using System;

namespace MyCompany.MyNamespace;

// Comment block

// 0.30.3
using System;

namespace MyCompany.MyNamespace;


// Comment block

Full Changelog: belav/csharpier@0.30.3...0.30.4

0.30.3

What's Changed

CSharpier.MsBuild doesn't fail the github action anymore #​1357

The changes for 1311 caused CSharpier.MsBuild to not report unformatted files as errors on linux.

Thanks go to @​PetSerAl for the fix

0.30.2

What's Changed

CSharpier.MsBuild now uses DOTNET_HOST_PATH instead of just dotnet #​1387

Use current dotnet binary from DOTNET_HOST_PATH instead of just dotnet.

Collection expression inside a dictionary adds unexpected new line #​1390

// input & expected output
Dictionary<string, string[]> dictionary = new()
{
    {
        "Key",
        [
            "SomeValue__________________________________________",
            "SomeValue__________________________________________",
        ]
    },
};

// 0.30.1
Dictionary<string, string[]> dictionary = new()
{
    {
        "Key",

        [
            "SomeValue__________________________________________",
            "SomeValue__________________________________________",
        ]
    },
};

Failed syntax tree validation reported when trailing comma added before a trailing comment #​1388

With the following code, CSharpier will add a trailing comma before the trailing comment.
CSharpier's syntax tree validation was incorrectly reporting this as a failure.

// input
var someObject = new SomeObject()
{
    Property1 = 1,
    Property2 = 2 // Trailing Comment
};

// output
var someObject = new SomeObject()
 ... (truncated)

## 0.30.0

## Breaking Changes
The CSharpier dotnet tool no longer supports net6 & net7.
## What's Changed
### Support C# 13 & dotnet 9. [#​1318](https://github.com/belav/csharpier/issues/1318)
CSharpier now supports dotnet 9 along with formatting all C# 13 language features.
### Inconsistent Formatting for new() Operator Compared to Explicit Object Constructors [#​1364](https://github.com/belav/csharpier/issues/1364)
Implicit and explicit object initialization with constructors was not formatted consistently
```c#
// input & expected output
SomeObject someObject = new(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

SomeObject someObject = new SomeObject(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

// 0.29.2
SomeObject someObject =
    new(someLongParameter___________________, someLongParameter___________________)
    {
        Property = longValue_______________________________________________________________________,
    };

SomeObject someObject = new SomeObject(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

Adds additional space before each member access in verbatim interpolated multiline string #​1358

When an interpolated verbatim string contained line breaks, the code within the interpolations would contain extra spaces.

// input & expected output
var someStringWithLineBreakAndLongValue =
    $@"
{someValue.GetValue().Name} someLongText________________________________________________________________";

// 0.29.2
 ... (truncated)

## 0.29.2

## What's Changed
### Comments don't follow tabs indent style [#​1343](https://github.com/belav/csharpier/issues/1343)
Prior to `0.29.2` CSharpier was converting any tabs within the block of a multiline comment to spaces.
```c#
public void SomeFunction()
{
	/*
	The following line is an example with an indent:
		This line is indented by one tab. (prior to 0.29.2 this would end up as a tab followed by 4 spaces)
	*/
	/*
	The following line is an example with an indent:
		This line is indented by 4 spaces but will be converted to 1 tab (prior to 0.29.2 this would end up as a tab followed by 4 spaces)
	*/
	/*
	The following line is an example with an indent:
	   This line is indented by 3 spaces but will be left as 3 spaces
	*/
}

csharpier-ignore-start now supported in object initializers #​1342

// input & expected output
return new SomeClass
{
    // csharpier-ignore-start
    SomeProperty =     someValue,
    SomeProperty2 =     someValue
    // csharpier-ignore-end
};

// 0.29.1
return new SomeClass
{
    // csharpier-ignore-start
    SomeProperty = someValue,
    SomeProperty2 = someValue
    // csharpier-ignore-end
};

Fixed extra new line between cast and collection expression. #​1334

// input & expected output
CallMethod(
    (string[])
        [
            longerValue_____________________________________________,
            longerValue_____________________________________________,
        ]
 ... (truncated)

## 0.29.1

## What's Changed
### Sorting of usings with underscore differs from Visual Studio [#​1327](https://github.com/belav/csharpier/issues/1327)
CSharpier now sorts `_` to the bottom of usings.
```c#
using SomeCompany.MWord;
using SomeCompany.ZWord;
using SomeCompany._Word;

Process cannot access the file "....net8.0\any\server.log" while running multiple extensions. #​1324

CSharpier Server now uses a log file name based on the port that it is starting on to avoid concurrency issues trying to access the same log file

Full Changelog: belav/csharpier@0.29.0...0.29.1

0.29.0

Breaking Changes

The formatting command will now exit with an error code of 1 if one of the target files cannot be compiled #​1131

Prior to 0.29.0 if csharpier encountered a file that could not be compiled it would treat it as a warning and exit with a code of 0.
As of 0.29.0 a file that cannot be compiled is now treated as an error and csharpier will exit with code 1

What's Changed

Enforce trailing commas in object and collection initializer #​668

CSharpier will now add trailing commas automatically where appropriate. It will collapse to a single line and remove the trailing comma in cases where everything fits on one line.

// input
public enum SomeEnum
{
    Value1,
    Value2
}

string[] someArray = new string[]
{
    someLongValue_____________________________________________,
    someLongValue_____________________________________________
};

string[] someArray = new string[]
{
    someValue,
    someValue,
};

// 0.29.0
public enum SomeEnum
{
    Value1,
    Value2,
}

string[] someArray = new string[]
{
    someLongValue_____________________________________________,
    someLongValue_____________________________________________,
}

string[] someArray = new string[] { someValue, someValue };

Many thanks go to @​dawust for the contribution.

Support for formatting custom file extensions #​1220

Prior to 0.29.0 csharpier would only format files with an extension of .cs or .csx. It is now possible to configure csharpier to format other files extensions, and to specify configuration options per file extension.
See https://csharpier.com/docs/Configuration#configuration-overrides for more details.

Invalid blank line being added with lambda returning collection expression #​1306

... (truncated)

Commits viewable in compare view.

Updated CSharpier.Core from 0.28.2 to 1.2.6.

Release notes

Sourced from CSharpier.Core's releases.

1.2.6

What's Changed

[Bug]: XML with DOCTYPE results in "invalid xml" warning #​1809

CSharpier was not formatting xml that included a doctype and instead reporting that it was invalid xml.

<?xml version="1.0"?>
<!DOCTYPE staff SYSTEM "staff.dtd"[
    <!ENTITY ent1 "es">
]>
<staff></staff>

[Bug]: Initializing a span using stackalloc leads to different formatting compared to new #​1808

When initializing a spacn using stackalloc, it was not being formatting consistently with other code

// input & expected output
Span<int> metatable = new int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

Span<int> metatable = stackalloc int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

// 1.2.5
Span<int> metatable = new int[]
{
    00000000000000000000000001,
    00000000000000000000000002,
    00000000000000000000000003,
};

Span<int> metatable =
    stackalloc int[] {
        00000000000000000000000001,
        00000000000000000000000002,
        00000000000000000000000003,
    };

[Bug]: Comments in otherwise empty object pattern disappear when formatting #​1804

CSharpier was removing comments if they were the only content of an object pattern.

// input & expected output
var match = obj is {
    //Property: 123
 ... (truncated)

## 1.2.5

## What's Changed
### Performance issue when running CLI in project with pnpm on Windows [#​1781](https://github.com/belav/csharpier/issues/1781)
**1.2.4 did not properly address this**

The code to determine if there is a version of CSharpier.MsBuild referenced that does not match the version of CSharpier being run has been optimized to not look in node_modules or .git. This significantly speeds things up in some setups.


**Full Changelog**: https://github.com/belav/csharpier/compare/1.2.4...1.2.5

## 1.2.4

# 1.2.4
## What's Changed
### Weird enter in closing when formatting XAML TextBlock [#​1785](https://github.com/belav/csharpier/issues/1785)
CSharpier was breaking an end element to a new line when it did not need to.
```xml
<!-- input & expected output -->
<root>
  <TextBlock Foreground="DarkGray">
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
  <TextBlock>
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
</root>

<!-- 1.2.3 -->
<root>
  <TextBlock Foreground="DarkGray">
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock
  >
  <TextBlock>
    I saw the sign. When I opened up my eyes, I saw the sign.
  </TextBlock>
</root>

Order Modifiers (IDE0036) not formatting when code is preceded by a comment. #​1784

When incorrectly ordered modifiers were preceded by a comment they were not being reordered. Thanks go to @​TimothyMakkison for the contribution

// input & 1.2.3

// Comment
required public int Prop1 { get; set; }

// expected output
// Comment
public required int Prop1 { get; set; }

Performance issue when running CLI in project with pnpm on Windows #​1781

The code to determine if there is a version of CSharpier.MsBuild referenced that does not match the version of CSharpier being run has been optimized to not look in node_modules or .git. This significantly speeds things up in some setups.

Full Changelog: belav/csharpier@1.2.3...1.2.4

1.2.3

What's Changed

Large directories ignored in .gitignore significantly impact performance. #​1776

CSharpier was enumerating all files within all subdirectories and then determining if they should be formatted or not. That logic was optimized to only enumerate files in directories that are not ignored.

Full Changelog: belav/csharpier@1.2.2...1.2.3

1.2.2

What's Changed

The null coalescing operator is grouped in an unexpected place #​1769

Null coalescing is now consistently broken thanks to a contribution from @​ogaken-1

// input & expected output
var x =
    someValue.SomeCall().SomeProperty.SomeProperty
    ?? someValue.SomeCall().SomeProperty.SomeProperty;

var x =
    someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty
    ?? someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty;

var x =
    someValue.SomeCall().A_______.B_______.C_______
    ?? someValue.SomeCall().A_______.B_______.C_______;

// 1.2.1
var x =
    someValue.SomeCall().SomeProperty.SomeProperty ?? someValue
        .SomeCall()
        .SomeProperty.SomeProperty;

var x =
    someValue.SomeCall().SomeProperty?.SomeCall().SomeProperty ?? someValue
        .SomeCall()
        .SomeProperty?.SomeCall()
        .SomeProperty;

var x =
    someValue.SomeCall().A_______.B_______.C_______ ?? someValue
        .SomeCall()
        .A_______.B_______.C_______;

Xml formatter should not add a second line #​1760

When formatting an xml file with a declaration and extra blank line was being added.

<!-- input & expected output -->
<?xml version="1.0" encoding="utf-8"?>

<Element />

<!-- 1.2.1 -->
<?xml version="1.0" encoding="utf-8"?>


<Element />

... (truncated)

1.2.1

What's Changed

Multiline comments are now formatted in a single line in XML format #​1747

The 1.2.0 release was combining xml comments into a single line.

<!-- input & expected output -->
<Root>
  <!-- This is the first line comment-->
  <!-- This is the second line of my comment-->
</Root>

<!-- 1.2.0 -->
<Root>
  <!-- This is the first line comment--><!-- This is the second line of my comment-->
</Root>

Full Changelog: belav/csharpier@1.2.0...1.2.1

1.2.0

What's Changed

Custom XML Parser #​1679

CSharpier now has a custom xml parser. XmlDocument and XDocument do not provide the original white space or the original attribute values from the file that was parsed which blocked the ability to implement supporting keeping empty new lines and not automatically encoding attributes.

Support for keeping empty lines in xml files #​1599

CSharpier now supports keeping a single empty line between elements in xml files. It will remove any initial or trailing empty lines.

<!-- input -->
<Root>

  <Element />


  <Element />

</Root>

<!-- expected output -->
<Root>
  <Element />

  <Element />
</Root>

<!-- 1.1.2 -->
<Root>
  <Element />
  <Element />
</Root>

Xml - don't automatically encode attribute values #​1610

CSharpier will no longer encode attribute values. It will leave them encoded if they are supplied that way.

<!-- input & expected output -->
<Target Name="Transform" BeforeTargets="Build">
  <Message Importance="high" Text="@(MyItems->'MyItems has %(Identity)', ', ')" />
</Target>

<!-- 1.1.2 -->
<Target Name="Transform" BeforeTargets="Build">
  <Message Importance="high" Text="@(MyItems-&gt;'MyItems has %(Identity)', ', ')" />
</Target>

Add option to all integrations to report incorrect formatting as a warning instead of error #​1687

Formatting "using" import split on multiple lines requires formatting it twice to get the expected result #​1698

When a using contained a newline before the namespace it was not being sorted properly.

// input
using System.Net;
using
 ... (truncated)

## 1.1.2

## What's Changed
### Inconsistencies with null-coalescing wrapping on method chains [#​1573](https://github.com/belav/csharpier/issues/1573)
On longer method chains, depending on the exact chain a null coalescing expression wouldn't always be preceded by a new line.

```c#
// input & expected output
var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallMethod__________()
    ?? throw new Exception();

var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallLongMethod___________________________________________________()
    ?? throw new Exception();

// 1.1.1
var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallMethod__________() ?? throw new Exception();

var x =
    someValue
        .Property.CallLongMethod_____________________________________()
        .CallLongMethod___________________________________________________()
    ?? throw new Exception();

Full Changelog: belav/csharpier@1.1.1...1.1.2

1.1.1

What's Changed

Unhandled exception: System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string. (Parameter 'startIndex') #​1673

CSharpier was throwing an exception when formating a directory contained a file without an extension.

1.1.0

What's Changed

.gitignore from parent folders impacts formatting of children #​1627

CSharpier will no longer consider .gitignore files located above the root of the current git repository.

Changes to stdin formatting #​288 #​1657

There is a new option --stdin-filepath that is used to specify the filepath CSharpier should use for resolving options and ignore files.
When no path is specified via stdin-path

  • No ignore files are considered.
  • The current directory is considered when locating options
  • The file is assumed to be c# unless the first non-whitespace character is < in which case it is assumed to be xml.

Support for C# 14 and .NET 10 #​1654 #​1646

Changes were required to support the following

  • Extension Declarations
  • File level directives in file based C# Apps

Support --ignore-path CLI option #​1585

It is now possible to specify the path to an ignore file

dotnet csharpier format . --ignore-path .config/.csharpierignore

Format xaml and slnx by default #​1628 #​1604

CSharpier now formats xaml and slnx by default without the need for configuration changes.

XML formatting is not taking into account EOL configuration on multiline comments #​1660

When formatting the following XML, CSharpier would always use the system system default for ending lines within the comment instead of the respecting the configured EOL setting.

<Element>
  <!--
  Comment with EOL
  -->
</Element>

Error when no read access to intermediate containing folder #​1656

In the case that CSharpier had access to a sub directory but not the parent of that sub directory, it was failing with an exception. That has been resolved.

Misleading message after "csharpier check" #​1645

Previously the format and check commands both used the same output message. The check command now correctly reports that it checked files and did not format them.

# 1.0.3
dotnet csharpier check .
Formatted 13226 files in 21986ms.

# 1.1.0
dotnet csharpier check .
Checked 13226 files in 21986ms.

Multiline collection expressions should not be indented #​1635

CSharpier now formats collection expressions consistently when they are in a property

// input & expected output
public class ClassName
{
    public SomeObject LongValue = new
 ... (truncated)

## 1.0.3

## What's Changed
### Switch block case with conditionals adding newlines [#​1630](https://github.com/belav/csharpier/issues/1630)
Switch blocks were breaking on conditions within patterns.
```c#
// input and expected output
switch ("")
{
    case "" or "":
        break;
}

// 1.0.2
switch ("")
{
    case ""
    or "":
        break;
}

switch expression formatting adds odd newlines #​1620

CSharpier was breaking after a discard with a when, resulting in extra new lines

// input and expected output
_ = someValue switch
{
    _ when KeepWhenWithDiscard() => "",
    _ when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "",
    _ when KeepWhenWithDiscard_________________(
            SomeObject_______________________________________________
        ) => "LongString_____________________________________________________________________",
};

// 1.0.2
_ = someValue switch
{
    _ when KeepWhenWithDiscard() => "",
    _
        when KeepWhenWithDiscard_________________(
            SomeObject....

_Description has been truncated_

Bumps BenchmarkDotNet from 0.13.12 to 0.15.8
Bumps ClangSharp.PInvokeGenerator from 17.0.1 to 20.1.2.1
Bumps coverlet.collector from 6.0.2 to 8.0.1
Bumps csharpier from 0.28.2 to 1.2.6
Bumps CSharpier.Core from 0.28.2 to 1.2.6
Bumps Fody from 6.8.1 to 6.9.3
Bumps Humanizer.Core from 2.14.1 to 3.0.10
Bumps InlineIL.Fody from 1.8.0 to 1.10.2
Bumps Microsoft.Build.Locator from 1.7.8 to 1.11.2
Bumps Microsoft.CodeAnalysis.CSharp to 4.14.0, 5.3.0
Bumps Microsoft.CodeAnalysis.CSharp.Workspaces to 4.14.0, 5.3.0
Bumps Microsoft.CodeAnalysis.Workspaces.MSBuild from 4.9.2 to 5.3.0
Bumps Microsoft.Extensions.Configuration from 8.0.0 to 10.0.5
Bumps Microsoft.Extensions.Configuration.CommandLine from 8.0.0 to 10.0.5
Bumps Microsoft.Extensions.Configuration.EnvironmentVariables from 8.0.0 to 10.0.5
Bumps Microsoft.Extensions.Configuration.Json from 8.0.0 to 10.0.5
Bumps Microsoft.Extensions.FileSystemGlobbing from 8.0.0 to 10.0.5
Bumps Microsoft.Extensions.Logging.Console from 8.0.0 to 10.0.5
Bumps Microsoft.VisualStudio.Setup.Configuration.Interop from 3.10.2154 to 3.14.2075
Bumps NUnit.Analyzers from 4.1.0 to 4.12.0
Bumps Silk.NET.BuildTools from 2.21.0 to 2.23.0
Bumps System.CommandLine from 2.0.0-beta4.22272.1 to 2.0.5
Bumps System.IO.Hashing from 8.0.0 to 10.0.5
Bumps System.Linq.Async from 6.0.1 to 7.0.0
Bumps Verify.DiffPlex from 3.0.0 to 3.1.2
Bumps Verify.NUnit from 25.0.1 to 31.15.0
Bumps xunit from 2.8.1 to 2.9.3
Bumps xunit.runner.visualstudio from 2.8.1 to 3.1.5

---
updated-dependencies:
- dependency-name: BenchmarkDotNet
  dependency-version: 0.15.8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: ClangSharp.PInvokeGenerator
  dependency-version: 20.1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: coverlet.collector
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: csharpier
  dependency-version: 1.2.6
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: CSharpier.Core
  dependency-version: 1.2.6
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.CodeAnalysis.CSharp
  dependency-version: 4.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Microsoft.CodeAnalysis.CSharp.Workspaces
  dependency-version: 4.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Fody
  dependency-version: 6.9.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Humanizer.Core
  dependency-version: 3.0.10
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.CodeAnalysis.CSharp
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.CodeAnalysis.CSharp.Workspaces
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: InlineIL.Fody
  dependency-version: 1.10.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Microsoft.Build.Locator
  dependency-version: 1.11.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Microsoft.CodeAnalysis.Workspaces.MSBuild
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.Configuration
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.Configuration.CommandLine
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.Configuration.EnvironmentVariables
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.Configuration.Json
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.FileSystemGlobbing
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.Extensions.Logging.Console
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Microsoft.VisualStudio.Setup.Configuration.Interop
  dependency-version: 3.14.2075
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: NUnit.Analyzers
  dependency-version: 4.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Silk.NET.BuildTools
  dependency-version: 2.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: System.CommandLine
  dependency-version: 2.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: silk3_deps
- dependency-name: System.IO.Hashing
  dependency-version: 10.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: System.Linq.Async
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: Verify.DiffPlex
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: Verify.NUnit
  dependency-version: 31.15.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
- dependency-name: xunit
  dependency-version: 2.9.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: silk3_deps
- dependency-name: xunit.runner.visualstudio
  dependency-version: 3.1.5
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: silk3_deps
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Author

dependabot bot commented on behalf of github Apr 14, 2026

Dependabot couldn't access the repository. Because of this, Dependabot cannot update this pull request.

1 similar comment
@dependabot @github
Copy link
Copy Markdown
Author

dependabot bot commented on behalf of github Apr 16, 2026

Dependabot couldn't access the repository. Because of this, Dependabot cannot update this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants