我在使用来自Google Nuget包(Google.Apis.Drive.v3)的DriveService时遇到问题。

我收到此错误:


  严重性代码说明项目文件行抑制状态
  错误CS1061'BaseClientService'不包含'Files'的定义,并且找不到扩展方法'Files'接受类型为'BaseClientService'的第一个参数(您是否缺少using指令或程序集引用?)Sampleproject.Web C :\ sample \ Sampleproject.Web \ Controllers \ DriveController.cs 117有效


c# - BaseClientService不包含文件的定义-LMLPHP

我正在使用官方文档中的部分指南:https://developers.google.com/drive/v3/web/quickstart/dotnet#step_1_turn_on_the_api_name

最初,我认为这只是我所缺少的“用法”,但我似乎无法弄清楚/用谷歌的方式找到它。

编辑:

我的服务如下所示:
c# - BaseClientService不包含文件的定义-LMLPHP

我的用户凭证如下所示:
c# - BaseClientService不包含文件的定义-LMLPHP

最佳答案

我不确定您是如何创建service的,但是您可以尝试:

我猜你正在做这样的事情。

// Create Drive API service.
var service  = new BaseClientService.Initializer()
    {
    HttpClientInitializer = credential,
    ApplicationName = "Drive Authentication Sample",
    };


在这种情况下,您应该这样声明服务。

// Create Drive API service.
var service  = new DriveService(new BaseClientService.Initializer()
    {
     HttpClientInitializer = credential,
     ApplicationName = "Drive Authentication Sample",
     });


更新:

问题的部分原因可能是您正在混合使用V2和V3。

using Google.Apis.Drive.v3;


清单:

var pageStreamer = new PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>(
                                                   (request, token) => request.PageToken = token,
                                                   response => response.NextPageToken,
                                                   response => response.Files);

var req = service.Files.List();
req.PageSize = 1000;


foreach (var result in pageStreamer.Fetch(req))
     {
     Console.WriteLine(result.Id);
     }

10-02 18:43