diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln
index e74cd272481..b5c5edff456 100644
--- a/OpenTelemetry.sln
+++ b/OpenTelemetry.sln
@@ -29,6 +29,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7CB2F02E
build\docker-compose.net6.0.yml = build\docker-compose.net6.0.yml
build\docker-compose.netcoreapp3.1.yml = build\docker-compose.netcoreapp3.1.yml
build\finalize-publicapi.ps1 = build\finalize-publicapi.ps1
+ build\GlobalAttrExclusions.txt = build\GlobalAttrExclusions.txt
build\opentelemetry-icon-color.png = build\opentelemetry-icon-color.png
build\OpenTelemetry.prod.loose.ruleset = build\OpenTelemetry.prod.loose.ruleset
build\OpenTelemetry.prod.ruleset = build\OpenTelemetry.prod.ruleset
diff --git a/build/Common.prod.props b/build/Common.prod.props
index c97f40a0ed9..915644b7755 100644
--- a/build/Common.prod.props
+++ b/build/Common.prod.props
@@ -35,6 +35,7 @@
$(Build_ArtifactStagingDirectory)
true
+ $(RepoRoot)\build\GlobalAttrExclusions.txt
diff --git a/build/GlobalAttrExclusions.txt b/build/GlobalAttrExclusions.txt
new file mode 100644
index 00000000000..eb04262f5e1
--- /dev/null
+++ b/build/GlobalAttrExclusions.txt
@@ -0,0 +1,4 @@
+// These attributes should be excluded from ApiCompat checks.
+
+T:System.Runtime.CompilerServices.CompilerGeneratedAttribute
+T:System.Runtime.CompilerServices.NullableContextAttribute
\ No newline at end of file
diff --git a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Shipped.txt b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Shipped.txt
index 4ada116f14e..afa4f5a68a7 100644
--- a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Shipped.txt
+++ b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Shipped.txt
@@ -1,21 +1,21 @@
#nullable enable
-~abstract OpenTelemetry.BaseExporter.Export(in OpenTelemetry.Batch batch) -> OpenTelemetry.ExportResult
-~abstract OpenTelemetry.BaseExportProcessor.OnExport(T data) -> void
-~OpenTelemetry.BaseExporter
-~OpenTelemetry.BaseExporter.ParentProvider.get -> OpenTelemetry.BaseProvider
-~OpenTelemetry.BaseExportProcessor
-~OpenTelemetry.BaseExportProcessor.BaseExportProcessor(OpenTelemetry.BaseExporter exporter) -> void
+abstract OpenTelemetry.BaseExporter.Export(in OpenTelemetry.Batch batch) -> OpenTelemetry.ExportResult
+abstract OpenTelemetry.BaseExportProcessor.OnExport(T! data) -> void
+OpenTelemetry.BaseExporter
+OpenTelemetry.BaseExporter.ParentProvider.get -> OpenTelemetry.BaseProvider?
+OpenTelemetry.BaseExportProcessor
+OpenTelemetry.BaseExportProcessor.BaseExportProcessor(OpenTelemetry.BaseExporter! exporter) -> void
OpenTelemetry.BaseProcessor.ParentProvider.get -> OpenTelemetry.BaseProvider?
-~OpenTelemetry.Batch
-~OpenTelemetry.Batch.Batch(T[] items, int count) -> void
-~OpenTelemetry.Batch.Enumerator.Current.get -> T
+OpenTelemetry.Batch
+OpenTelemetry.Batch.Batch(T![]! items, int count) -> void
+OpenTelemetry.Batch.Enumerator.Current.get -> T!
~OpenTelemetry.Batch.GetEnumerator() -> OpenTelemetry.Batch.Enumerator
~OpenTelemetry.BatchActivityExportProcessor.BatchActivityExportProcessor(OpenTelemetry.BaseExporter exporter, int maxQueueSize = 2048, int scheduledDelayMilliseconds = 5000, int exporterTimeoutMilliseconds = 30000, int maxExportBatchSize = 512) -> void
-~OpenTelemetry.BatchExportProcessor
-~OpenTelemetry.BatchExportProcessor.BatchExportProcessor(OpenTelemetry.BaseExporter exporter, int maxQueueSize = 2048, int scheduledDelayMilliseconds = 5000, int exporterTimeoutMilliseconds = 30000, int maxExportBatchSize = 512) -> void
+OpenTelemetry.BatchExportProcessor
+OpenTelemetry.BatchExportProcessor.BatchExportProcessor(OpenTelemetry.BaseExporter! exporter, int maxQueueSize = 2048, int scheduledDelayMilliseconds = 5000, int exporterTimeoutMilliseconds = 30000, int maxExportBatchSize = 512) -> void
~OpenTelemetry.BatchExportProcessorOptions
-~OpenTelemetry.CompositeProcessor.AddProcessor(OpenTelemetry.BaseProcessor processor) -> OpenTelemetry.CompositeProcessor
-~OpenTelemetry.CompositeProcessor.CompositeProcessor(System.Collections.Generic.IEnumerable> processors) -> void
+OpenTelemetry.CompositeProcessor.AddProcessor(OpenTelemetry.BaseProcessor! processor) -> OpenTelemetry.CompositeProcessor!
+OpenTelemetry.CompositeProcessor.CompositeProcessor(System.Collections.Generic.IEnumerable!>! processors) -> void
~OpenTelemetry.Metrics.BaseExportingMetricReader.BaseExportingMetricReader(OpenTelemetry.BaseExporter exporter) -> void
~OpenTelemetry.Metrics.ExplicitBucketHistogramConfiguration.Boundaries.get -> double[]
~OpenTelemetry.Metrics.ExplicitBucketHistogramConfiguration.Boundaries.set -> void
@@ -46,8 +46,8 @@ OpenTelemetry.BaseProcessor.ParentProvider.get -> OpenTelemetry.BaseProvider?
~OpenTelemetry.Resources.ResourceBuilder.Build() -> OpenTelemetry.Resources.Resource
~OpenTelemetry.Resources.ResourceBuilder.Clear() -> OpenTelemetry.Resources.ResourceBuilder
~OpenTelemetry.SimpleActivityExportProcessor.SimpleActivityExportProcessor(OpenTelemetry.BaseExporter exporter) -> void
-~OpenTelemetry.SimpleExportProcessor
-~OpenTelemetry.SimpleExportProcessor.SimpleExportProcessor(OpenTelemetry.BaseExporter exporter) -> void
+OpenTelemetry.SimpleExportProcessor
+OpenTelemetry.SimpleExportProcessor.SimpleExportProcessor(OpenTelemetry.BaseExporter! exporter) -> void
~OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler) -> void
~OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
~OpenTelemetry.Trace.Sampler.Description.get -> string
@@ -60,19 +60,19 @@ OpenTelemetry.BaseProcessor.ParentProvider.get -> OpenTelemetry.BaseProvider?
~OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, System.Collections.Generic.IEnumerable> attributes) -> void
~OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func