Skip to content

Conversation

martincostello
Copy link
Member

@martincostello martincostello commented Jun 7, 2025

Changes

Add support for building and testing with .NET 10.

Initially using .NET 10 Release Candidate 1.

Resolves #6059.

Merge requirement checklist

  • CONTRIBUTING guidelines followed (license requirements, nullable enabled, static analysis, etc.)
  • Unit tests added/updated
  • Appropriate CHANGELOG.md files updated for non-trivial changes
  • Changes in public API reviewed (if applicable)

@github-actions github-actions bot added infra Infra work - CI/CD, code coverage, linters dependencies Pull requests that update a dependency file documentation Documentation related pkg:OpenTelemetry.Api Issues related to OpenTelemetry.Api NuGet package pkg:OpenTelemetry.Exporter.OpenTelemetryProtocol Issues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet package pkg:OpenTelemetry.Exporter.Prometheus.HttpListener Issues related to OpenTelemetry.Exporter.Prometheus.HttpListener NuGet package pkg:OpenTelemetry.Exporter.Zipkin Issues related to OpenTelemetry.Exporter.Zipkin NuGet package labels Jun 7, 2025
Copy link

codecov bot commented Jun 7, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.78%. Comparing base (19dda39) to head (af50b1a).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #6307      +/-   ##
==========================================
+ Coverage   86.69%   86.78%   +0.09%     
==========================================
  Files         258      258              
  Lines       11910    11910              
==========================================
+ Hits        10325    10336      +11     
+ Misses       1585     1574      -11     
Flag Coverage Δ
unittests-Project-Experimental 86.61% <ø> (+0.33%) ⬆️
unittests-Project-Stable 86.60% <ø> (+0.05%) ⬆️
unittests-Solution 86.78% <ø> (+0.12%) ⬆️
unittests-UnstableCoreLibraries-Experimental 85.87% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 3 files with indirect coverage changes

@martincostello
Copy link
Member Author

I don't know why the w3c-trace-context integration tests are failing.

@github-actions github-actions bot removed pkg:OpenTelemetry.Exporter.Prometheus.HttpListener Issues related to OpenTelemetry.Exporter.Prometheus.HttpListener NuGet package pkg:OpenTelemetry.Exporter.Zipkin Issues related to OpenTelemetry.Exporter.Zipkin NuGet package labels Jun 8, 2025
@martincostello
Copy link
Member Author

I don't know why the w3c-trace-context integration tests are failing.

Caused by this breaking change - just need to work out it seems to be applying to .NET 8, 9 & 10 in the W3C tests and why manually setting it back isn't working.

@martincostello
Copy link
Member Author

just need to work out it seems to be applying to .NET 8, 9 & 10 in the W3C tests

Fixed the .NET 10 tests - the .NET 8 and 9 tests are failing because the .NET 8 and 9 runtimes aren't present in the docker image, so it rolls forward to .NET 10, then the breaking change applies (but can't be turned off because the new API is missing), so the tests fail.

@martincostello
Copy link
Member Author

martincostello commented Jun 12, 2025

Fixed the .NET 10 tests - the .NET 8 and 9 tests are failing because the .NET 8 and 9 runtimes aren't present in the docker image, so it rolls forward to .NET 10, then the breaking change applies (but can't be turned off because the new API is missing), so the tests fail.

This wasn't correct - the actual reason was that all TFMs were referencing the 10.0.* package, so the breaking change was being applied. The fix was to use the workaround with all the TFMs.

Might need tweaking depending on the outcome of #6327.

martincostello added a commit to martincostello/opentelemetry-dotnet that referenced this pull request Jun 13, 2025
Improve developer experience when troubleshooting failing tests (like I was in open-telemetry#6307) by logging both stderr and stdout and ignoring warnings in the upstream Python tests.
martincostello added a commit to martincostello/opentelemetry-dotnet that referenced this pull request Jun 18, 2025
Improve developer experience when troubleshooting failing tests (like I was in open-telemetry#6307) by logging both stderr and stdout and ignoring warnings in the upstream Python tests.
martincostello added a commit to martincostello/opentelemetry-dotnet that referenced this pull request Jun 18, 2025
Improve developer experience when troubleshooting failing tests (like I was in open-telemetry#6307) by logging both stderr and stdout and ignoring warnings in the upstream Python tests.
martincostello added a commit to martincostello/opentelemetry-dotnet that referenced this pull request Jun 19, 2025
Improve developer experience when troubleshooting failing tests (like I was in open-telemetry#6307) by logging both stderr and stdout and ignoring warnings in the upstream Python tests.
Copy link
Contributor

This PR was marked stale due to lack of activity and will be closed in 7 days. Commenting or pushing will instruct the bot to automatically remove the label. This bot runs once per day.

@github-actions github-actions bot added the Stale Issues and pull requests which have been flagged for closing due to inactivity label Jun 20, 2025
@github-actions github-actions bot removed the Stale Issues and pull requests which have been flagged for closing due to inactivity label Jun 21, 2025
@martincostello martincostello force-pushed the dotnet-10 branch 2 times, most recently from f2211e4 to ac4df46 Compare June 25, 2025 08:10
Minimise diff and remove redundant changes.
@martincostello martincostello linked an issue Oct 9, 2025 that may be closed by this pull request
@github-actions github-actions bot added the pkg:OpenTelemetry Issues related to OpenTelemetry NuGet package label Oct 9, 2025
@martincostello
Copy link
Member Author

Once #6327 is merged I'll rebase this and update the CHANGELOGs.

Remove override.
Restore `Microsoft.Extensions.DependencyInjection.Abstractions` override, but update for .NET 10.
@martincostello
Copy link
Member Author

NuGet packages and their dependencies are listed below, the diff for which is:

@@ -15,6 +15,11 @@
       "Microsoft.Extensions.Logging.Configuration": "9.0.0",
       "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
     },
+    "net10.0": {
+      "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0-rc.1.25451.107",
+      "Microsoft.Extensions.Logging.Configuration": "10.0.0-rc.1.25451.107",
+      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
+    },
     "net8.0": {
       "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
       "Microsoft.Extensions.Logging.Configuration": "8.0.0",
@@ -28,16 +33,17 @@
   },
   "OpenTelemetry.Api": {
     ".NETFramework4.6.2": {
-      "System.Diagnostics.DiagnosticSource": "9.0.0"
+      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
     },
     ".NETStandard2.0": {
-      "System.Diagnostics.DiagnosticSource": "9.0.0"
+      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
     },
+    "net10.0": {},
     "net8.0": {
-      "System.Diagnostics.DiagnosticSource": "9.0.0"
+      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
     },
     "net9.0": {
-      "System.Diagnostics.DiagnosticSource": "9.0.0"
+      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
     }
   },
   "OpenTelemetry.Api.ProviderBuilderExtensions": {
@@ -49,6 +55,10 @@
       "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
       "OpenTelemetry.Api": "*"
     },
+    "net10.0": {
+      "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0-rc.1.25451.107",
+      "OpenTelemetry.Api": "*"
+    },
     "net8.0": {
       "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
       "OpenTelemetry.Api": "*"
@@ -69,9 +79,11 @@
       "System.Text.Encodings.Web": "4.7.2",
       "System.Text.Json": "4.7.2"
     },
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
-      "OpenTelemetry": "*",
-      "System.Text.Json": "8.0.5"
+      "OpenTelemetry": "*"
     },
     "net9.0": {
       "OpenTelemetry": "*"
@@ -84,6 +96,9 @@
     ".NETStandard2.0": {
       "OpenTelemetry": "*"
     },
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
       "OpenTelemetry": "*"
     },
@@ -101,6 +116,9 @@
     ".NETStandard2.1": {
       "OpenTelemetry": "*"
     },
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
       "Microsoft.Extensions.Configuration.Binder": "8.0.2",
       "OpenTelemetry": "*"
@@ -110,6 +128,9 @@
     }
   },
   "OpenTelemetry.Exporter.Prometheus.AspNetCore": {
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
       "OpenTelemetry": "*"
     },
@@ -124,6 +145,9 @@
     ".NETStandard2.0": {
       "OpenTelemetry": "*"
     },
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
       "OpenTelemetry": "*"
     },
@@ -142,9 +166,11 @@
       "System.Text.Encodings.Web": "4.7.2",
       "System.Text.Json": "4.7.2"
     },
+    "net10.0": {
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
-      "OpenTelemetry": "*",
-      "System.Text.Json": "8.0.5"
+      "OpenTelemetry": "*"
     },
     "net9.0": {
       "OpenTelemetry": "*"
@@ -159,6 +185,10 @@
       "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
       "OpenTelemetry": "*"
     },
+    "net10.0": {
+      "Microsoft.Extensions.Hosting.Abstractions": "10.0.0-rc.1.25451.107",
+      "OpenTelemetry": "*"
+    },
     "net8.0": {
       "Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
       "OpenTelemetry": "*"
@@ -175,6 +205,9 @@
     ".NETStandard2.0": {
       "OpenTelemetry.Api": "*"
     },
+    "net10.0": {
+      "OpenTelemetry.Api": "*"
+    },
     "net8.0": {
       "OpenTelemetry.Api": "*"
     },
@@ -191,6 +224,10 @@
       "OpenTelemetry.Api": "*",
       "OpenTracing": "[0.12.1, 0.13.0)"
     },
+    "net10.0": {
+      "OpenTelemetry.Api": "*",
+      "OpenTracing": "[0.12.1, 0.13.0)"
+    },
     "net8.0": {
       "OpenTelemetry.Api": "*",
       "OpenTracing": "[0.12.1, 0.13.0)"
main (19dda39)
{
  "OpenTelemetry": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    ".NETStandard2.1": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
      "Microsoft.Extensions.Logging.Configuration": "8.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    }
  },
  "OpenTelemetry.Api": {
    ".NETFramework4.6.2": {
      "System.Diagnostics.DiagnosticSource": "9.0.0"
    },
    ".NETStandard2.0": {
      "System.Diagnostics.DiagnosticSource": "9.0.0"
    },
    "net8.0": {
      "System.Diagnostics.DiagnosticSource": "9.0.0"
    },
    "net9.0": {
      "System.Diagnostics.DiagnosticSource": "9.0.0"
    }
  },
  "OpenTelemetry.Api.ProviderBuilderExtensions": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
      "OpenTelemetry.Api": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    }
  },
  "OpenTelemetry.Exporter.Console": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    "net8.0": {
      "OpenTelemetry": "*",
      "System.Text.Json": "8.0.5"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.InMemory": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.OpenTelemetryProtocol": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.1": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Configuration.Binder": "8.0.2",
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Prometheus.AspNetCore": {
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Prometheus.HttpListener": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Zipkin": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    "net8.0": {
      "OpenTelemetry": "*",
      "System.Text.Json": "8.0.5"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Extensions.Hosting": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Extensions.Propagators": {
    ".NETFramework4.6.2": {
      "OpenTelemetry.Api": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry.Api": "*"
    },
    "net8.0": {
      "OpenTelemetry.Api": "*"
    },
    "net9.0": {
      "OpenTelemetry.Api": "*"
    }
  },
  "OpenTelemetry.Shims.OpenTracing": {
    ".NETFramework4.6.2": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    ".NETStandard2.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    "net8.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    "net9.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    }
  }
}
This PR (c986343)
{
  "OpenTelemetry": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    ".NETStandard2.1": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    "net10.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0-rc.1.25451.107",
      "Microsoft.Extensions.Logging.Configuration": "10.0.0-rc.1.25451.107",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
      "Microsoft.Extensions.Logging.Configuration": "8.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
      "Microsoft.Extensions.Logging.Configuration": "9.0.0",
      "OpenTelemetry.Api.ProviderBuilderExtensions": "*"
    }
  },
  "OpenTelemetry.Api": {
    ".NETFramework4.6.2": {
      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
    },
    ".NETStandard2.0": {
      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
    },
    "net10.0": {},
    "net8.0": {
      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
    },
    "net9.0": {
      "System.Diagnostics.DiagnosticSource": "10.0.0-rc.1.25451.107"
    }
  },
  "OpenTelemetry.Api.ProviderBuilderExtensions": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    },
    "net10.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0-rc.1.25451.107",
      "OpenTelemetry.Api": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
      "OpenTelemetry.Api": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
      "OpenTelemetry.Api": "*"
    }
  },
  "OpenTelemetry.Exporter.Console": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.InMemory": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.OpenTelemetryProtocol": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.1": {
      "OpenTelemetry": "*"
    },
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Configuration.Binder": "8.0.2",
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Prometheus.AspNetCore": {
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Prometheus.HttpListener": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*"
    },
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Exporter.Zipkin": {
    ".NETFramework4.6.2": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    ".NETStandard2.0": {
      "OpenTelemetry": "*",
      "System.Text.Encodings.Web": "4.7.2",
      "System.Text.Json": "4.7.2"
    },
    "net10.0": {
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Extensions.Hosting": {
    ".NETFramework4.6.2": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    },
    ".NETStandard2.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    },
    "net10.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "10.0.0-rc.1.25451.107",
      "OpenTelemetry": "*"
    },
    "net8.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
      "OpenTelemetry": "*"
    },
    "net9.0": {
      "Microsoft.Extensions.Hosting.Abstractions": "9.0.0",
      "OpenTelemetry": "*"
    }
  },
  "OpenTelemetry.Extensions.Propagators": {
    ".NETFramework4.6.2": {
      "OpenTelemetry.Api": "*"
    },
    ".NETStandard2.0": {
      "OpenTelemetry.Api": "*"
    },
    "net10.0": {
      "OpenTelemetry.Api": "*"
    },
    "net8.0": {
      "OpenTelemetry.Api": "*"
    },
    "net9.0": {
      "OpenTelemetry.Api": "*"
    }
  },
  "OpenTelemetry.Shims.OpenTracing": {
    ".NETFramework4.6.2": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    ".NETStandard2.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    "net10.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    "net8.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    },
    "net9.0": {
      "OpenTelemetry.Api": "*",
      "OpenTracing": "[0.12.1, 0.13.0)"
    }
  }
}
Generated with Program.cs
#:property Nullable=disable
#:property PublishAot=false

using System.Text.Json;

var result = new SortedDictionary<string, SortedDictionary<string, SortedDictionary<string, string>>>();

foreach (var file in Directory.GetFiles(args[0], "*.nupkg", SearchOption.TopDirectoryOnly).Order())
{
    await using var archive = System.IO.Compression.ZipFile.OpenRead(file);

    if (archive.Entries.FirstOrDefault(x => x.FullName.EndsWith(".nuspec", StringComparison.OrdinalIgnoreCase)) is not { } entry)
    {
        continue;
    }

    await using var stream = entry.Open();
    using var reader = new StreamReader(stream);

    var nuspec = System.Xml.Linq.XDocument.Parse(await reader.ReadToEndAsync());

    var ns = nuspec.Root.GetDefaultNamespace();
    var metadata = nuspec.Root.Element(ns + "metadata");
    var package = metadata.Element(ns + "id").Value;
    var dependencies = metadata.Element(ns + "dependencies");

    var groups = new SortedDictionary<string, SortedDictionary<string, string>>();
    if (dependencies != null)
    {
        foreach (var group in dependencies.Elements(ns + "group"))
        {
            var tfm = group.Attribute("targetFramework")?.Value;

            if (!groups.TryGetValue(tfm, out var packages))
            {
                groups[tfm] = packages = [];
            }

            foreach (var element in group.Elements(ns + "dependency"))
            {
                var id = element.Attribute("id").Value;
                var version = element.Attribute("version")?.Value ?? "*";
                packages[id] = version;
            }
        }
    }

    result[package] = groups;
}

// Remove versions that reference other packages we scanned - they will have different MinVer versions that we don't care about
foreach ((var id, var groups) in result)
{
    foreach ((var tfm, var group) in groups)
    {
        foreach (var other in result.Keys)
        {
            if (group.ContainsKey(other))
            {
                group[other] = "*";
            }
        }
    }
}

#pragma warning disable CA1869 // Cache and reuse 'JsonSerializerOptions' instances
var options = new JsonSerializerOptions
{
    NewLine = "\n",
    WriteIndented = true
};
#pragma warning restore CA1869 // Cache and reuse 'JsonSerializerOptions' instances

await Console.Out.WriteLineAsync(JsonSerializer.Serialize(result, options));

Add CHANGELOG entries for .NET 10.
@github-actions github-actions bot added pkg:OpenTelemetry.Api.ProviderBuilderExtensions Issues related to OpenTelemetry.Api.ProviderBuilderExtensions NuGet package pkg:OpenTelemetry.Exporter.Console Issues related to OpenTelemetry.Exporter.Console NuGet package pkg:OpenTelemetry.Exporter.InMemory Issues related to OpenTelemetry.Exporter.InMemory NuGet package pkg:OpenTelemetry.Exporter.Prometheus.AspNetCore Issues related to OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet package pkg:OpenTelemetry.Exporter.Prometheus.HttpListener Issues related to OpenTelemetry.Exporter.Prometheus.HttpListener NuGet package labels Oct 9, 2025
@martincostello martincostello changed the title [WIP] Support .NET 10 Support .NET 10 Oct 9, 2025
@github-actions github-actions bot added pkg:OpenTelemetry.Exporter.Zipkin Issues related to OpenTelemetry.Exporter.Zipkin NuGet package pkg:OpenTelemetry.Extensions.Hosting Issues related to OpenTelemetry.Extensions.Hosting NuGet package pkg:OpenTelemetry.Extensions.Propagators Issues related to OpenTelemetry.Extensions.Propagators NuGet package pkg:OpenTelemetry.Shims.OpenTracing Issues related to OpenTelemetry.Shims.OpenTracing NuGet package labels Oct 9, 2025
@martincostello martincostello marked this pull request as ready for review October 9, 2025 20:54
@martincostello martincostello requested a review from a team as a code owner October 9, 2025 20:54
@Copilot Copilot AI review requested due to automatic review settings October 9, 2025 20:54
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for .NET 10.0 to the OpenTelemetry .NET project, upgrading from .NET 9.0 Release Candidate to .NET 10.0 Release Candidate 1. The changes enable building and testing with the new framework version.

  • Updates target frameworks across the solution to include net10.0
  • Upgrades package references to .NET 10.0 RC1 versions
  • Removes workarounds for DiagnosticSource bugs that were fixed in .NET 10

Reviewed Changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
global.json Updates SDK version to .NET 10.0 RC1
build/Common.props Adds net10.0 to target framework configurations
Directory.Packages.props Updates package versions to .NET 10.0 RC1
test/OpenTelemetry.Tests/Trace/SamplersTests.cs Enables previously disabled assertions due to .NET 10 bug fixes
test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/W3CTraceContextTests.cs Adds workaround for W3C trace context propagator changes
Multiple CHANGELOG.md files Documents .NET 10.0 support addition
Multiple Dockerfiles Updates Docker images to .NET 10.0 RC1
GitHub workflow files Adds net10.0 to test matrices

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

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 documentation Documentation related infra Infra work - CI/CD, code coverage, linters keep-open Prevents issues and pull requests being closed as stale pkg:OpenTelemetry.Api.ProviderBuilderExtensions Issues related to OpenTelemetry.Api.ProviderBuilderExtensions NuGet package pkg:OpenTelemetry.Api Issues related to OpenTelemetry.Api NuGet package pkg:OpenTelemetry.Exporter.Console Issues related to OpenTelemetry.Exporter.Console NuGet package pkg:OpenTelemetry.Exporter.InMemory Issues related to OpenTelemetry.Exporter.InMemory NuGet package pkg:OpenTelemetry.Exporter.OpenTelemetryProtocol Issues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet package pkg:OpenTelemetry.Exporter.Prometheus.AspNetCore Issues related to OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet package pkg:OpenTelemetry.Exporter.Prometheus.HttpListener Issues related to OpenTelemetry.Exporter.Prometheus.HttpListener NuGet package pkg:OpenTelemetry.Exporter.Zipkin Issues related to OpenTelemetry.Exporter.Zipkin NuGet package pkg:OpenTelemetry.Extensions.Hosting Issues related to OpenTelemetry.Extensions.Hosting NuGet package pkg:OpenTelemetry.Extensions.Propagators Issues related to OpenTelemetry.Extensions.Propagators NuGet package pkg:OpenTelemetry.Shims.OpenTracing Issues related to OpenTelemetry.Shims.OpenTracing NuGet package pkg:OpenTelemetry Issues related to OpenTelemetry NuGet package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update sampler tests for DS v10
3 participants