The .NET Tracer supports all .NET-based languages (for example, C#, F#, Visual Basic). It has beta support for trimmed apps.

The .NET Tracer is open source. For more information, see the .NET Tracer repository.

Supported .NET Core runtimes

The .NET Tracer supports automatic instrumentation on the following .NET Core versions. It also supports .NET Framework.

VersionMicrosoft End of LifeSupport levelPackage version
.NET 8GAlatest (>= 2.42.0)
.NET 7GAlatest (>= 2.20.0)
.NET 6GAlatest (>= 2.0.0)
.NET 505/10/2022GAlatest (>= 2.0.0)
.NET Core 3.112/13/2022GAlatest
.NET Core 2.108/21/2021GAlatest
.NET Core 3.003/03/2020EOLNot recommended
.NET Core 2.212/23/2019EOLNot recommended
.NET Core 2.010/01/2018EOLNot recommended

Additional information can be found within Microsoft’s .NET Core Lifecycle Policy, End of life APM .NET Core versions, and in Runtime support policy for .NET Core APM.

Supported processor architectures

The .NET Tracer supports automatic instrumentation on the following architectures:

Processor architecturesSupport levelPackage version
Windows x86 (win-x86)GAlatest
Windows x64 (win-x64)GAlatest
Linux x64 (linux-x64)GAlatest
Alpine Linux x64 (linux-musl-x64)GAlatest
Linux ARM64 (linux-arm64)GA.NET 5+ only, added in version 1.27.0


The latest version of the .NET Tracer can automatically instrument the following libraries:

Framework or libraryNuGet packageIntegration Name
ADO.NETAll AdoNet integrationsAdoNet
AerospikeAerospike.Client 4.0.0+Aerospike
ASP.NET CoreMicrosoft.AspNetCore
2.0+ and 3.0+
Azure FunctionsMicrosoft.Azure.Webjobs 3.0+AzureFunctions
Amazon DynamoDBAWSSDK.DynamoDBv2 3.0+AwsDynamoDb
Amazon KinesisAWSSDK.Kinesis 3.0+AwsKinesis
Amazon SNSAWSSDK.SNS 3.0+AwsSns
Amazon SQSAWSSDK.SQS 3.0+AwsSqs
CosmosDbMicrosoft.Azure.Cosmos 3.6.0+CosmosDb
CouchbaseCouchbaseNetClient 2.2.8+Couchbase
ElasticsearchElasticsearch.Net 5.3.0+ElasticsearchNet
GraphQL .NETGraphQL 2.3.0+GraphQL
gRPCGrpc.Net.Client2.30.0+ (.NET Core 3.0+ only)
Grpc.Core 2.30.0+
Grpc.AspNetCore 2.30.0+
HotChocolateHotChocolate 11.0.0+HotChocolate
HttpClient / HttpMessageHandlerSystem.Net.Http 4.0+HttpMessageHandler
KafkaConfluent.Kafka 1.4+Kafka
IBM MQamqmdnetstd 9.0.0+IbmMq
MongoDBMongoDB.Driver.Core 2.1.0+MongoDb
MySqlMySql.Data 6.7.0+
MySqlConnector 0.61.0+
OracleOracle.ManagedDataAccess 4.122.0+Oracle
PostgreSQLNpgsql 4.0+Npgsql
Process"System.Diagnostics.Process" 4.0+Process
RabbitMQRabbitMQ.Client 3.6.9+ .RabbitMQ
Redis (ServiceStack client)ServiceStack.Redis 4.0.48+ServiceStackRedis
Redis (StackExchange client)StackExchange.Redis 1.0.187+StackExchangeRedis
Service Fabric RemotingMicrosoft.ServiceFabric.Services.Remoting 4.0.470+ServiceRemoting
SQLiteSystem.Data.Sqlite 2.0.0+
Microsoft.Data.Sqlite 1.0.0+
SQL ServerSystem.Data 4.0.0+
System.Data.SqlClient 4.0.0+
Microsoft.Data.SqlClient 1.0.0+
WebClient / WebRequestSystem.Net.Requests 4.0+WebRequest

Don’t see the library you’re looking for? First, check if the library produces observability data compatible with OpenTelemetry (for example, activity based tracing). If not, Datadog is continually adding additional support. Check with the Datadog team for help.

OpenTelemetry based integrations

Some libraries provide built in Activity based tracing. This is the same mechanism the OpenTelemetry project relies on. By setting DD_TRACE_OTEL_ENABLED to true, the .NET tracer will automatically resurface traces provided by the libraries themselves. This is possible since version 2.21.0. Here are a list of libraries that are tested with this setup (more libraries provide such tracing though, they aren’t yet expliciitly tested).

Framework or libraryNuGet packageIntegration NameSpecific instructions
Azure Service BusAzure.Messaging.ServiceBus 7.14.0+AzureServiceBusSee Azure SDK section below

Azure SDK

Azure SDK provides built-in OpenTelemetry support. Enable it by setting the AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE environment variable to true or by setting the Azure.Experimental.EnableActivitySource context switch to true in your application code. See Azure SDK documentation for more details.

End of life .NET Core versions

The .NET Tracer works on .NET Core 2.0, 2.1, 2.2, and 3.0, but these versions reached their end of life and are no longer supported by Microsoft. See Microsoft’s support policy for more details. Datadog recommends using the latest patch version of .NET Core 3.1, .NET 5, .NET 6, or .NET 7. Older versions of .NET Core may encounter the following runtime issues when enabling automatic instrumentation:

IssueAffected .NET Core VersionsSolutionMore information
JIT Compiler bug on Linux/x642.0.x,
Upgrade .NET Core to the latest patch version, or follow steps in the linked issueDataDog/dd-trace-dotnet/issues/302
Resource lookup bug with a non en-US locale2.0.0Upgrade .NET Core to 2.0.3 or abovedotnet/runtime/issues/23938

Supported Datadog Agent versions

Datadog Agent versionPackage version

Runtime support policy for .NET Core APM

Datadog APM for .NET Core depends on the host operating system, .NET Core runtime, certain .NET Core libraries, and the Datadog Agent/API. These third party software systems support specific versions of .NET Core. When the external software no longer supports a version of .NET Core, Datadog APM for .NET Core also limits its support for that version.

Levels of support

LevelSupport provided
UnsupportedNo implementation. Contact customer support for special requests.
BetaInitial implementation. May not yet contain all features. Support for new features, bug & security fixes provided on a best-effort basis.
General Availability (GA)Full implementation of all features. Full support for new features, bug & security fixes.
MaintenanceFull implementation of existing features. Does not receive new features. Support for bug & security fixes only.
End-of-life (EOL)No support.

Package versioning

Datadog APM for .NET Core practices semantic versioning. Version updates imply the following changes to runtime support:

  • Major version updates (for example 1.0.0 to 2.0.0) may change support for any runtime from Beta/GA to Maintenance/EOL.
  • Minor version updates (for example 1.0.0 to 1.1.0) won’t lower the level of support for one runtime but may add support for one.
  • Patch version updates (for example 1.0.0 to 1.0.1) will not change support for any runtime.

Further reading