From c2b685fd0127713382d7a31d7b190d644e3a91d8 Mon Sep 17 00:00:00 2001 From: martincostello Date: Thu, 16 Apr 2026 11:03:09 +0100 Subject: [PATCH 1/2] [Infra] Add banned API analyzers Add analyzers to prevent use of .NET APIs in production code that have preferred alternatives. --- Directory.Packages.props | 1 + build/BannedSymbols.txt | 12 ++++++++++++ build/Common.prod.props | 4 ++++ opentelemetry-dotnet-contrib.slnx | 1 + 4 files changed, 18 insertions(+) create mode 100644 build/BannedSymbols.txt diff --git a/Directory.Packages.props b/Directory.Packages.props index 4dcce51254..5e27a0c6ef 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -32,6 +32,7 @@ + diff --git a/build/BannedSymbols.txt b/build/BannedSymbols.txt new file mode 100644 index 0000000000..f5846010dd --- /dev/null +++ b/build/BannedSymbols.txt @@ -0,0 +1,12 @@ +M:System.Net.Http.HttpClient.GetByteArrayAsync(string); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetByteArrayAsync(string, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetByteArrayAsync(System.Uri); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetByteArrayAsync(System.Uri, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(string); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(string, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(System.Uri); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(System.Uri, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpContent.ReadAsByteArrayAsync(); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpContent.ReadAsByteArrayAsync(System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpContent.ReadAsStringAsync(); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpContent.ReadAsStringAsync(System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. diff --git a/build/Common.prod.props b/build/Common.prod.props index 0fa7c200a3..0ca8918994 100644 --- a/build/Common.prod.props +++ b/build/Common.prod.props @@ -141,4 +141,8 @@ + + + + diff --git a/opentelemetry-dotnet-contrib.slnx b/opentelemetry-dotnet-contrib.slnx index 0cad70df0f..c77773c2c8 100644 --- a/opentelemetry-dotnet-contrib.slnx +++ b/opentelemetry-dotnet-contrib.slnx @@ -30,6 +30,7 @@ + From 74887129c6615c5143f7acab2745b6d8715e9155 Mon Sep 17 00:00:00 2001 From: Martin Costello Date: Thu, 16 Apr 2026 13:59:09 +0100 Subject: [PATCH 2/2] [Infra] Address feedback Fix incorrect method signatures. --- build/BannedSymbols.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/BannedSymbols.txt b/build/BannedSymbols.txt index f5846010dd..1a7906f0d2 100644 --- a/build/BannedSymbols.txt +++ b/build/BannedSymbols.txt @@ -1,9 +1,9 @@ -M:System.Net.Http.HttpClient.GetByteArrayAsync(string); Use methods on HttpClientHelpers instead. -M:System.Net.Http.HttpClient.GetByteArrayAsync(string, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetByteArrayAsync(System.String); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetByteArrayAsync(System.String, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. M:System.Net.Http.HttpClient.GetByteArrayAsync(System.Uri); Use methods on HttpClientHelpers instead. M:System.Net.Http.HttpClient.GetByteArrayAsync(System.Uri, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. -M:System.Net.Http.HttpClient.GetStringAsync(string); Use methods on HttpClientHelpers instead. -M:System.Net.Http.HttpClient.GetStringAsync(string, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(System.String); Use methods on HttpClientHelpers instead. +M:System.Net.Http.HttpClient.GetStringAsync(System.String, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. M:System.Net.Http.HttpClient.GetStringAsync(System.Uri); Use methods on HttpClientHelpers instead. M:System.Net.Http.HttpClient.GetStringAsync(System.Uri, System.Threading.CancellationToken); Use methods on HttpClientHelpers instead. M:System.Net.Http.HttpContent.ReadAsByteArrayAsync(); Use methods on HttpClientHelpers instead.