Search code examples
onedrivemicrosoft-graph-sdks

Microsoft.Graph, c# sdk, trying to get list of driveitems from onedrive root folder: Error "DriveRequestBuilder does not contain a definition for Root


.NET MAUI App,

I am trying to get a list of Children from Root folder on Drive... I get this error in edition/compile time, when I use a snippet of code from MS Learn:

'DriveRequestBuilder' does not contain a definition for 'Root' and no accessible extension method 'Root' accepting a first argument of type 'DriveRequestBuilder' could be found (are you missing a using directive or an assembly reference?)

I just cloned a sample project developed by microsoft staff and inserted a snippet of code from MS Learn.

Pls, get the entire project with the error here:

https://github.com/leoderja/DriveRequestBuilder_RootNotDefined.git

The error is in:

MauiAppBasic.csproj project ->
MSALClient folder -> MSGraphHelper.cs file -> TestRootChildrenAsync method

Using Microsoft.Graph version 5.0.0-rc.1

EDITION: Here a minimal example:

using Microsoft.Graph;
GraphServiceClient graphClient = new GraphServiceClient(new HttpClient());
var children = await graphClient.Me.Drive.Root.Children.Request().GetAsync();

The problem was Microsoft.Graph v5.00 rc1. When I set v4.50 the errors disappeared. I hope that Microsoft staff update the documentation with the changes when final release of v5 is available.

Img 1

Img 2


Solution

  • Since version 5 the Root is accessible through Drives[userDriveId] but not through Me.Drive

    var children = await client.Drives[userDriveId].Root.Children.GetAsync();
    

    If you don't know the user's drive id you need to call Me.Drive.

    var driveItem = await client.Me.Drive.GetAsync();
    var children = await client.Drives[driveItem.Id].Root.Children.GetAsync();