.NET Core 3.1 WebAPI启用Azure App Insight所需NuGet包说明
.NET Core 3.1 WebAPI 启用 Azure Application Insights 依赖确认
- 项目背景:开发 .NET Core 3.1 WebAPI 项目,后续将部署至 Azure Web Service,计划为项目接入 Azure Application Insights 遥测能力。
当前项目已安装的NuGet包配置
<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.Agent.Intercept" Version="2.4.0" /> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.TraceListener" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.Web" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.WindowsServer" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" Version="2.20.0" /> <PackageReference Include="Microsoft.AspNet.TelemetryCorrelation" Version="1.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.5" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.5" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.20.0" /> <PackageReference Include="Microsoft.Identity.Web" Version="1.1.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" /> </ItemGroup>
初步精简的包列表
开发人员初步判断仅需保留以下包即可满足需求:
<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights" Version="2.20.0" /> <PackageReference Include="Microsoft.Identity.Web" Version="1.1.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" /> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.20.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.20.0" /> <PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" Version="2.20.0" /> </ItemGroup>
待确认问题
- 如何判定支撑 Azure Application Insights 功能所需的必需NuGet包范围
- 当前已引用的包中,哪些属于非必需的冗余依赖
依赖判定结论
核心必需包
对于ASP.NET Core 3.1项目,启用基础Application Insights能力仅需显式引用1个App Insights相关包:Microsoft.ApplicationInsights.AspNetCore。
这是官方提供的元包,会自动通过NuGet传递依赖引入所有基础能力所需的组件,包括核心SDK、HTTP请求遥测、依赖调用收集、性能计数器收集、Windows Server环境遥测通道、遥测关联能力等,不需要手动单独引用这些子组件包,手动重复引用反而容易出现版本不一致冲突。
按需引用包
以下包不属于基础必需项,可根据实际需求选择是否保留:
Microsoft.Extensions.Logging.ApplicationInsights:如果需要将ILogger体系输出的日志同步到Application Insights,才需要引用这个包- 与App Insights无关的业务包(
Microsoft.Identity.Web、Swashbuckle.AspNetCore、身份认证相关包等):按自身业务功能需求决定是否保留,和App Insights能力无关 Microsoft.Extensions.DependencyInjection、Microsoft.Extensions.DependencyInjection.Abstractions:.NET Core 3.1框架已自带对应3.1版本的程序集,除非有特殊的版本兼容需求,否则不需要手动单独引用高版本
明确冗余/不兼容包
以下包完全不需要在ASP.NET Core 3.1项目中引用,属于冗余甚至可能引发配置冲突的依赖:
Microsoft.ApplicationInsights.Web:仅适用于基于System.Web的传统ASP.NET Framework项目,ASP.NET Core不适用,引用后可能导致遥测重复上报、配置加载异常Microsoft.ApplicationInsights.TraceListener:用于适配旧版System.Diagnostics.Trace日志体系,.NET Core优先使用ILogger体系,不需要该组件Microsoft.ApplicationInsights.Agent.Intercept:旧版Application Insights Agent的代码拦截组件,Azure Web Service部署时的无代码接入扩展会自动处理相关能力,代码中无需手动引用Microsoft.AspNet.TelemetryCorrelation:为传统ASP.NET Framework提供请求遥测关联能力的组件,ASP.NET Core框架原生内置遥测关联能力,不需要引用该包- 所有被
Microsoft.ApplicationInsights.AspNetCore自动传递引入的子包(Microsoft.ApplicationInsights、Microsoft.ApplicationInsights.DependencyCollector、Microsoft.ApplicationInsights.PerfCounterCollector、Microsoft.ApplicationInsights.WindowsServer、Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel):不需要手动在csproj中添加引用,NuGet还原时会自动加载对应版本
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

