You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

并行使用Microsoft.Graph与Microsoft.Graph.Beta遇类型冲突问题求助

解决ASP.NET Core并行使用Microsoft.Graph和Microsoft.Graph.Beta的类型冲突问题

1. 补全csproj的包别名配置

你已经给Beta包添加了别名,为了彻底区分两个SDK,建议给正式版包也加上别名,修改后的csproj配置如下:

<PackageReference Include="Microsoft.Identity.Web.MicrosoftGraphBeta" Version="1.25.10" Aliases="MSGraphBeta"/>
<PackageReference Include="Microsoft.Identity.Web.MicrosoftGraph" Version="1.25.10" Aliases="MSGraph"/>

2. 在代码文件中声明程序集别名

在需要使用Graph SDK的代码文件最顶部(所有using语句之前),添加以下代码:

extern alias MSGraphBeta;
extern alias MSGraph;

然后根据需求引用对应的命名空间:

  • 要使用正式版的GraphServiceClient,写这行:
using MSGraph::Microsoft.Graph;
  • 要使用Beta版的类型,写这行:
using MSGraphBeta::Microsoft.Graph.Beta;
// 若Beta版中也存在Microsoft.Graph下的重复类型,替换为:
// using MSGraphBeta::Microsoft.Graph;

3. 依赖注入时明确区分客户端

在Program.cs(或Startup.cs)里注册客户端时,分别调用对应的扩展方法:

// 注册正式版Graph客户端
builder.Services.AddMicrosoftGraph(builder.Configuration.GetSection("Graph"));
// 注册Beta版Graph客户端
builder.Services.AddMicrosoftGraphBeta(builder.Configuration.GetSection("GraphBeta"));

如果注入时遇到类型冲突,可以通过命名服务或显式指定泛型参数来区分。

报错原因

GraphServiceClient类型同时存在于正式版和Beta版的程序集中,哪怕你只写了using Microsoft.Graph;,编译器仍会从两个程序集里找到同名类型,导致冲突。通过程序集别名+extern alias的方式,能强制指定使用哪个程序集下的类型,彻底解决这个问题。

内容的提问来源于stack exchange,提问作者Agyss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:31:29