Azure成本详情获取代码报错:CS1061 'UsageDetail'无ResourceGroupName属性
解决UsageDetail类型无ResourceGroupName/ResourceName属性的CS1061错误
原因分析
你遇到的错误是因为当前使用的Azure成本管理库版本中,UsageDetail类并未直接暴露ResourceGroupName和ResourceName属性。这些信息要么嵌套在其他属性结构中,要么因SDK版本差异导致属性命名不同。
具体解决方案
方案1:使用新版Azure.ResourceManager.CostManagement库(推荐)
如果使用的是Azure SDK v2(基于Azure.ResourceManager的现代库),资源组和资源名称需要从ResourceId属性解析:
.GroupBy(r => new { ResourceGroupName = Azure.Core.ResourceIdentifier.Parse(r.ResourceId).ResourceGroupName, ResourceName = Azure.Core.ResourceIdentifier.Parse(r.ResourceId).Name })
ResourceIdentifier是Azure SDK提供的工具类,可直接从资源ID字符串中提取标准化的资源组、资源名称等信息。
方案2:适配旧版Microsoft.Azure.Management.CostManagement库
若使用的是旧版SDK v1,资源组信息通常在Properties.ResourceGroup字段,资源名称需要从ResourceId路径截取:
.GroupBy(r => new { ResourceGroupName = r.Properties.ResourceGroup, ResourceName = r.Properties.ResourceId.Split('/').Last() })
方案3:核对NuGet包版本
确认安装的NuGet包与代码逻辑匹配:
- 新版SDK:安装
Azure.ResourceManager.CostManagement - 旧版SDK:安装
Microsoft.Azure.Management.CostManagement
避免混合引用不同版本的Azure SDK,这会导致类型定义冲突。
验证步骤
- 清理项目NuGet缓存,重新安装对应版本的成本管理库
- 替换GroupBy代码中的属性获取逻辑
- 编译项目,检查错误是否消除
内容的提问来源于stack exchange,提问作者Carlos Zamora
相关产品推荐
相关产品推荐

