Can't update multi-line <PackageVersion> · Issue #683 · dotnet-outdated/dotnet-outdated · GitHub
Skip to content

Can't update multi-line <PackageVersion> #683

Open

Description

@qoh

When I use dotnet-outdated -u to upgrade a solution's root Directory.Packages.props, any items that span multiple lines are silently left unchanged-- they don't get upgraded.

Here's an example snippet of my Directory.Packages.props:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
  </PropertyGroup>
  <ItemGroup>
    <!-- ... more packages ... -->
    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.7" />
    <PackageVersion
      Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication"
      Version="9.0.7"
    />
    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.7" />
    <!-- ... more packages ... -->
  </ItemGroup>
</Project>

When I run dotnet outdated -u -pre:Always --no-restore, the output contains:

Discovering projects...
Analyzing project(s)...
Analyzing dependencies...
......
» Project1
[net10.0]
Microsoft.AspNetCore.Components.WebAssembly 9.0.7 -> 10.0.0-rc.2.25502.107
Microsoft.AspNetCore.Components.WebAssembly.Authentication 9.0.7 -> 10.0.0-rc.2.25502.107
......
Upgrading package Microsoft.AspNetCore.Components.WebAssembly.Server...
Project Project2 [net10.0] upgraded successfully

Upgrading package Microsoft.AspNetCore.Components.WebAssembly...
Project Project1 [net10.0] upgraded successfully

Upgrading package Microsoft.AspNetCore.Components.WebAssembly.Authentication...
Project Project1 [net10.0] upgraded successfully

But it didn't actually write the new version of the multi-line items:

diff --git a/Directory.Packages.props b/Directory.Packages.props
index 45174c1ca..bf383ca02 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -32,53 +32,53 @@
     <PackageVersion Include="Macross.Json.Extensions" Version="3.0.0" />
-    <PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.7" />
-    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.0-rc.2.25502.107" />
+    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0-rc.2.25502.107" />
     <PackageVersion
       Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication"
       Version="9.0.7"
     />
-    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.7" />
-    <PackageVersion Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="9.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0-rc.2.25502.107" />
+    <PackageVersion Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="10.0.0-rc.2.25502.107" />
     <PackageVersion Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.24" />
......

.WebAssembly.Authentication is unchanged from 9.0.7 rather than being changed to 10.0.0-rc.2.25502.107

This also causes dotnet restore to fail since there's now many version incompatibilities/mismatches.

I'm using dotnet-outdated 4.6.8+c299fe8ae17f9d5fcfbb2170e2e2d6fce978ea5e.

Several of my items are wrapped onto multiple lines because the csharpier formatter does so when they're particularly long.

Activity

  1. tonholis commented on Apr 22, 2026

    @tonholis

    I've noticed the same.

    I have CentralPackageTransitivePinningEnabled=true in my Directory.Packages.props
    It let us forcing newer versions of transitive dependencies - when we want to fix CVEs by forcing patched transitive versions for instance.

    But dotnet outdated ignored these packages.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions