| Name | Modified | Size | Downloads / 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