Download Latest Version 1.3.0 source code.tar.gz (971.4 kB)
Email in envelope

Get an email when there's a new version of CSharpier

Home / 1.3.0
Name Modified Size InfoDownloads / Week
Parent folder
csharpier.1.3.0.nupkg 2026-06-07 23.3 MB
1.3.0 source code.tar.gz 2026-06-07 971.4 kB
1.3.0 source code.zip 2026-06-07 1.4 MB
README.md 2026-06-07 7.0 kB
Totals: 4 Items   25.7 MB 0

1.3.0

Breaking Changes

Change xml formatting to return error when it runs into syntax error so it is consistent with c# #1854

Previously CSharpier treated an invalid xml file as a warning instead of an error. This was inconsistent with how it treated c# files.
Invalid c# or xml files are not treated as errors.
The --compilation-errors-as-warnings argument has been renamed to --syntax-errors-as-warnings and can be used to return warnings instead of errors when encountering invalid files.

What's Changed

Feature: Configurable whitespace handling for xml #1790

CSharpier now supports two types of xml whitespace formatting strict or ignore.
By default all xml except xaml or axaml is treated as strict whitespace. See details

Feature: Move closing bracket for xml elements to the same line. #1598

With strict xml whitespace handling, csharpier now keeps the closing bracket for an element on the same line instead of breaking it to a new line.

:::xml
<!-- input & expected output -->
<ElementWithAttribute Attribute="AttributeValue__________________"
  >TextValue</ElementWithAttribute>

<!-- 1.2.6 -->
<ElementWithAttribute Attribute="AttributeValue__________________"
  >TextValue</ElementWithAttribute
>

Feature: Support for csharpier-ignore with XML formatter #1788

CSharpier now supports csharpier-ignore in xml files. See details

Feature: Add MSBuild transitive and multi-target support #1833

CSharpier.MSBuild can now work as a transitive dependency.

Feature: allow checking formatting with cache #1830

The csharpier check command now supports a --use-cache option.

Feature: remove dependency on Microsoft.AspNetCore.App #1508

Previously CSharpier required that Microsoft.AspNetCore.App be installed. CSharpier has been modified to use an HttpListener when it is run using server to remove the need for this dependency.

Fix: csharpier-ignore comment removes linespaces before block #1867

CSharpier was removing blank lines before csharpier-ignore comments in some cases

:::c#
// input and expected output
var x = 1;

// csharpier-ignore
var y=1;

/// 1.2.6
var x = 1;
// csharpier-ignore
var y=1;

Fix: Inconsistent indentation for raw string literals. #1857

CSharpier was not consistently indenting raw string literals when they were inside of simple lambdas.

:::c#
// input & expected output
CallMethod(() =>
{
    var someString = """
        SomeRawString
        """;
});

// 1.2.6
CallMethod(() =>
{
    var someString = """
    SomeRawString
    """;
});

Fix: case of modifier reorder with leading trivia #1855

CSharpier was incorrectly reporting a syntax validation failure when it was reordering modifiers. This is now resolved.

:::c#
// when this code is modified and the modifiers are reorderd it should not report a syntax validation failure.
public class ClassName
{
    // SomeComment
    override public int GetHashCode() => 0;
}

Fix: Xml breaks final element when it contains mixed content #1841

CSharpier was breaking the end element in some cases when it should not be.

:::xml
<!-- input & expected output -->
<HtmlTypeElement
  >Some long text to make things break <a href="http://url.com"
    >url.com</a> more text.</HtmlTypeElement>

<!-- 1.2.6 -->
<HtmlTypeElement
  >Some long text to make things break <a href="http://url.com"
    >url.com</a
  > more text.</HtmlTypeElement
>

Fix: Unable to ignore csharpier formatting within case statement group #1824

CSharpier now supports csharpier-ignore comments within case statements.

:::c#
switch (1)
{
    case 2:
        // csharpier-ignore
        var unformatted      = true;
        break;
}

Fix: Incorrect formatting for simple lambda expression with comment #1147

CSharpier was indenting code for a simple lambda with a leading comment.

:::c#
// input & expected output
this.Where___________________(
    // Comment
    x =>
    {
        return x;
    }
);

// 1.2.6
this.Where___________________(
    // Comment
    x =>
{
    return x;
});

Fix: Ignores files it shouldn't ignore when negative patterns are used #1803

Fixed a couple more edgecases with CSharpier not handling negative ignore patterns the same way that git does

Fix: Tolerate missing directories when formatting from stdin #1848

CSharpier was throwing a DirectoryNotFoundException if it were passed a path via --stdin-path with a directory that did not exist.

Fix: Stop .gitignore walk at git worktree boundary #1860

When CSharpier walks up the target directory looking for .gitignore files it stops when encountering a .git directory. However in a git worktree there is no directory, .git is a file. This change ensures CSharpier stops when encountering a .git file so that CSharpier behaves the same in a worktree.

perf: cache IgnoreWithBasePath #1758

perf: fast comparison using FullSpan and source code #1737

perf: optimise SyntaxNodeComparer #1730

perf: set capacity of List in MembersForcedLine #1709

perf: use Stack.Peek to reduce Pop and Push churn #1708

perf: add Doc.Null check to Argument avoids Concat creation #1706

perf: use overload for Any( SyntaxTriviaList to prevent allocations #1703

Full Changelog: https://github.com/belav/csharpier/compare/1.2.6...1.3.0

Source: README.md, updated 2026-06-07