是否可以在同一应用程序中同时使用Microsoft.Graph和Microsoft.Graph.Beta?

问题描述

我正在编写一些针对.NET 4.8的C#代码,该代码需要使用Microsoft Graph。在Microsoft.Graph SDK(V1)上可以正常使用,但是当我尝试切换到Beta时,却遇到诸如

的编译错误
Error CS0433    The type 'GraphServiceClient' exists in both 'Microsoft.Graph.Beta,Version=0.29.0.0 <...>' and 'Microsoft.Graph,Version=1.19.0.0 <...>'

不幸的是,我正在使用的另一个Nuget(即SharePointPnPCoreOnline)取决于Microsoft.Graph 1.19。

两个程序集似乎都没有问题,因为-根据当前文档(https://docs.microsoft.com/en-us/graph/sdks/use-beta)-Beta应该使用其自己的名称空间:

using Microsoft.Graph.Beta;

不幸的是,这是错误的,两个库共享相同的命名空间Microsoft.Graph。上面的代码导致

Error CS0234    The type or namespace name 'Beta' does not exist in the namespace 'Microsoft.Graph' (are you missing an assembly reference?)

我正在尝试使用编译器选项来解决程序集,但是在VS2019下它非常复杂-到目前为止还算不上运气。

但是我想知道为什么我在这个问题上找不到任何东西,我肯定不是唯一的一个-是因为我错过了明显的事情吗?请帮忙:)

解决方法

不知道是否解决了这个问题,但是我通过向Microsoft.Graph.Beta包中添加一个别名来解决了这一问题。然后,在引用时,添加它以便能够引用您的beta端点或资源。将MSGraphBeta更改为您作为包添加的别名。

extern alias MSGraphBeta;
using GraphBeta = MSGraphBeta.Microsoft.Graph;