Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 19, 2025

This PR contains the following updates:

Package Change Age Confidence
CSharpier.MSBuild 1.0.1 -> 1.2.1 age confidence

Release Notes

belav/csharpier (CSharpier.MSBuild)

v1.2.1

Compare Source

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

v1.2.0

Compare Source

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="@&#8203;(MyItems->'MyItems has %(Identity)', ', ')" />
</Target>

<!-- 1.1.2 -->
<Target Name="Transform" BeforeTargets="Build">
  <Message Importance="high" Text="@&#8203;(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
    SomeProject.Bar;
using Microsoft.Extensions.Logging;

// expected output
using System.Net;
using Microsoft.Extensions.Logging;
using SomeProject.Bar;

// 1.1.2
using System.Net;
using SomeProject.Bar;
using Microsoft.Extensions.Logging;
An empty line is inserted in lambda #​1694

CSharpier was inserting an extra blank line in some situations with a lambda and a collection expression

// input & expected output
CallMethod(
    (parameter1, parameter2) =>
        [
            LongValue________________________________________________,
            LongValue________________________________________________,
        ]
);

// 1.1.2
CallMethod(
    (parameter1, parameter2) =>

        [
            LongValue________________________________________________,
            LongValue________________________________________________,
        ]
);
Indent .ThenInclude() for clearer navigation hierarchy in EF Core queries #​1602

CSharpier now treats .ThenInclude as a special case to improve formatting of EF queries

// input & expected output
websiteQueryable = websiteQueryable
    .Include(o => o.Categories)
    .Include(o => o.Categories)
        .ThenInclude(c => c.Products)
    .Include(o => o.Categories)
        .ThenInclude(c => c.RuleManager)
            .ThenInclude(rm => rm.RuleClauses)
    .Include(o => o.Categories)
        .ThenInclude(c => c.RuleManager)
            .ThenInclude(rm => rm.RuleClauses)
                .ThenInclude(rc => rc.RuleTypeOption);

// 1.1.2
websiteQueryable = websiteQueryable
    .Include(o => o.Categories)
    .Include(o => o.Categories)
    .ThenInclude(c => c.Products)
    .Include(o => o.Categories)
    .ThenInclude(c => c.RuleManager)
    .ThenInclude(rm => rm.RuleClauses)
    .Include(o => o.Categories)
    .ThenInclude(c => c.RuleManager)
    .ThenInclude(rm => rm.RuleClauses)
    .ThenInclude(rc => rc.RuleTypeOption);
Inconsistent indentation between is and other operators #​1601

Pattern operators were being indented inconsistently with other operators. The formatting is now more consistent

// input & expected output
var b2 = (
    System.Environment.SpecialFolder.AdminTools
    is System.Environment.SpecialFolder.AdminTools
        or System.Environment.SpecialFolder.AdminTools
        or System.Environment.SpecialFolder.AdminTools
);

var b2 =
    System.Environment.SpecialFolder.AdminTools
    is System.Environment.SpecialFolder.AdminTools
        or System.Environment.SpecialFolder.AdminTools
        or System.Environment.SpecialFolder.AdminTools;

var b2 =
    someLongValue____________________________________________
    == someOtherLongValue______________________________
        + someOtherLongValue______________________________;

var b2 = (
    someLongValue____________________________________________
    == someOtherLongValue______________________________
        + someOtherLongValue______________________________
);

// 1.1.2
var b2 = (
    System.Environment.SpecialFolder.AdminTools
        is System.Environment.SpecialFolder.AdminTools
            or System.Environment.SpecialFolder.AdminTools
            or System.Environment.SpecialFolder.AdminTools
);

var b2 =
    System.Environment.SpecialFolder.AdminTools
        is System.Environment.SpecialFolder.AdminTools
            or System.Environment.SpecialFolder.AdminTools
            or System.Environment.SpecialFolder.AdminTools;

var b2 =
    someLongValue____________________________________________
    == someOtherLongValue______________________________
        + someOtherLongValue______________________________;

var b2 = (
    someLongValue____________________________________________
    == someOtherLongValue______________________________
        + someOtherLongValue______________________________
);
Error when formatting with an indent size <= 0 #​1741

Previously csharpier would attempt to format code when indent size was set to 0. This was not intentional and had a number of bugs. CSharpier now error out when encountering an indent size of 0

Fix condition causing FirstTargetFramework build property erasure #​1696

In some situations CSharpier.Msbuild was running into a build failure.

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

v1.1.2

Compare Source

What's Changed

Inconsistencies with null-coalescing wrapping on method chains #​1573

On longer method chains, depending on the exact chain a null coalescing expression wouldn't always be preceded by a new line.

// 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

v1.1.1

Compare Source

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.

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

v1.1.0

Compare Source

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.

v1.0.3

Compare Source

dotnet csharpier check .
Formatted 13226 files in 21986ms.

v1.0.2

Compare Source

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
        CallMethod(() => CallAnotherMethod______________________________________________________());
        CallMethod(() => CallAnotherMethod______________________________________________________1()
        );
        CallMethod(() => CallAnotherMethod______________________________________________________12()
        );
        CallMethod(() =>
            CallAnotherMethod______________________________________________________123()
        );

Full Changelog: belav/csharpier@1.0.1...1.0.2


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependency:nuget Indicates a pull request related to updating or managing NuGet package dependencies. label Nov 19, 2025
@renovate renovate bot enabled auto-merge (squash) November 19, 2025 23:40
@renovate renovate bot force-pushed the renovate/csharpier.msbuild-1.x branch from be554a2 to 77b6dcb Compare November 20, 2025 14:34
@samtrion samtrion disabled auto-merge November 20, 2025 14:34
@samtrion samtrion merged commit 2a8c637 into main Nov 20, 2025
6 checks passed
@samtrion samtrion deleted the renovate/csharpier.msbuild-1.x branch November 20, 2025 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependency:nuget Indicates a pull request related to updating or managing NuGet package dependencies.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants