diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index c8fec659ce7..5d8d44e5156 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -2,11 +2,11 @@ name: Linux on: push: - branches: [ main ] + branches: [ 'main*' ] paths-ignore: - '**.md' pull_request: - branches: [ main ] + branches: [ 'main*' ] paths-ignore: - '**.md' @@ -16,11 +16,24 @@ jobs: strategy: matrix: - version: [netcoreapp3.1,net6.0] + version: [netcoreapp3.1,net6.0,net7.0] steps: - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '3.1.x' + + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '6.0.x' + + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '7.0.x' + include-prerelease: true + - name: Install dependencies run: dotnet restore diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 9996cd8ea83..ed9255ff292 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -2,11 +2,11 @@ name: Windows on: push: - branches: [ main ] + branches: [ 'main*' ] paths-ignore: - '**.md' pull_request: - branches: [ main ] + branches: [ 'main*' ] paths-ignore: - '**.md' @@ -16,11 +16,24 @@ jobs: strategy: matrix: - version: [net462,netcoreapp3.1,net6.0] + version: [net462,netcoreapp3.1,net6.0,net7.0] steps: - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '3.1.x' + + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '6.0.x' + + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '7.0.x' + include-prerelease: true + - name: Install dependencies run: dotnet restore diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln index 8e14f86b9bc..c668adcc4ab 100644 --- a/OpenTelemetry.sln +++ b/OpenTelemetry.sln @@ -12,6 +12,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .dockerignore = .dockerignore .editorconfig = .editorconfig CONTRIBUTING.md = CONTRIBUTING.md + global.json = global.json LICENSE = LICENSE NuGet.config = NuGet.config OpenTelemetry.proj = OpenTelemetry.proj @@ -233,7 +234,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.Pr EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.Propagators.Tests", "test\OpenTelemetry.Extensions.Propagators.Tests\OpenTelemetry.Extensions.Propagators.Tests.csproj", "{476D804B-BFEC-4D34-814C-DFFD97109989}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "correlation", "docs\logs\correlation\correlation.csproj", "{9A07D215-90AC-4BAF-BCDB-73D74FD3A5C5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "correlation", "docs\logs\correlation\correlation.csproj", "{9A07D215-90AC-4BAF-BCDB-73D74FD3A5C5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/build/Common.props b/build/Common.props index 94f485cb7b8..4dea82a1656 100644 --- a/build/Common.props +++ b/build/Common.props @@ -43,7 +43,7 @@ [2.1.58,3.0) [1.2.0-beta.354,2.0) 1.4.0 - 6.0.0 + [6.0.0,8.0) 4.7.0 4.7.0 4.5.3 diff --git a/global.json b/global.json index 69fd3584271..7179e7b7599 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,7 @@ { "sdk": { - "rollForward": "latestFeature", - "version": "6.0.100" + "rollForward": "latestMajor", + "version": "6.0.100", + "allowPrerelease": true } } diff --git a/src/OpenTelemetry.Api/CHANGELOG.md b/src/OpenTelemetry.Api/CHANGELOG.md index 26664dcb8a9..4880f9aa043 100644 --- a/src/OpenTelemetry.Api/CHANGELOG.md +++ b/src/OpenTelemetry.Api/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +* Added support for the .NET7 version of the + `System.Diagnostics.DiagnosticSource` package + ([#3605](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3605)) + ## 1.3.0 Released 2022-Jun-03 diff --git a/src/OpenTelemetry.Api/Internal/ActivityHelperExtensions.cs b/src/OpenTelemetry.Api/Internal/ActivityHelperExtensions.cs index 6cc238b8c23..b95c8fb3ff2 100644 --- a/src/OpenTelemetry.Api/Internal/ActivityHelperExtensions.cs +++ b/src/OpenTelemetry.Api/Internal/ActivityHelperExtensions.cs @@ -259,11 +259,37 @@ private static readonly DictionaryEnumerator.AllocationF ActivityTagObjectsEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate( typeof(Activity).GetField("_tags", BindingFlags.Instance | BindingFlags.NonPublic).FieldType); - private static readonly DictionaryEnumerator.AllocationFreeForEachDelegate - ActivityTagsCollectionEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate(typeof(ActivityTagsCollection)); - private static readonly DictionaryEnumerator.ForEachDelegate ForEachTagValueCallbackRef = ForEachTagValueCallback; + private static readonly DictionaryEnumerator.AllocationFreeForEachDelegate ActivityEventTagsEnumerator; + + private static readonly DictionaryEnumerator.AllocationFreeForEachDelegate ActivityLinkTagsEnumerator; + + static ActivityTagsEnumeratorFactory() + { + var activityEventTagsField = typeof(ActivityEvent).GetField("_tags", BindingFlags.Instance | BindingFlags.NonPublic); + if (activityEventTagsField != null) + { + // .NET 7 API + ActivityEventTagsEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate(activityEventTagsField.FieldType); + } + else + { + ActivityEventTagsEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate(typeof(ActivityTagsCollection)); + } + + var activityLinkTagsField = typeof(ActivityLink).GetField("_tags", BindingFlags.Instance | BindingFlags.NonPublic); + if (activityLinkTagsField != null) + { + // .NET 7 API + ActivityLinkTagsEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate(activityLinkTagsField.FieldType); + } + else + { + ActivityLinkTagsEnumerator = DictionaryEnumerator.BuildAllocationFreeForEachDelegate(typeof(ActivityTagsCollection)); + } + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Enumerate(Activity activity, ref TState state) { @@ -290,7 +316,7 @@ public static void Enumerate(ActivityLink activityLink, ref TState state) return; } - ActivityTagsCollectionEnumerator( + ActivityLinkTagsEnumerator( tags, ref state, ForEachTagValueCallbackRef); @@ -306,7 +332,7 @@ public static void Enumerate(ActivityEvent activityEvent, ref TState state) return; } - ActivityTagsCollectionEnumerator( + ActivityEventTagsEnumerator( tags, ref state, ForEachTagValueCallbackRef); diff --git a/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj b/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj index 8d1c69f4f50..c942c686aaa 100644 --- a/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj +++ b/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj @@ -2,7 +2,7 @@ Unit test project for OpenTelemetry - net6.0;netcoreapp3.1 + net7.0;net6.0;netcoreapp3.1 $(TargetFrameworks);net462 $(NoWarn),CS0618 @@ -13,7 +13,8 @@ - + + diff --git a/test/OpenTelemetry.Tests/Trace/LinkTest.cs b/test/OpenTelemetry.Tests/Trace/LinkTest.cs index 82a6b07a031..5fd5f14b462 100644 --- a/test/OpenTelemetry.Tests/Trace/LinkTest.cs +++ b/test/OpenTelemetry.Tests/Trace/LinkTest.cs @@ -83,7 +83,7 @@ public void Equality() Assert.True(link1.Equals(link3)); } - [Fact] + [Fact(Skip = "NET7 doesn't support ActivityLink equality")] public void Equality_WithAttributes() { var link1 = new Link(this.spanContext, this.tags);