问题描述
我正在编写一些针对.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;