C#Google BigQuery SDK参考问题

时间:2019-07-19 17:33:01

标签: c# google-bigquery

我正在尝试构建BigQuery应用程序,但遇到了障碍。 (这是一个.Net 4.6控制台应用程序)

我已经安装了NuGet软件包Google.Cloud.BigQuery.V2(v1.3.0),并且安装了许多依赖项,其中之一是System.Net.Http。

我修改了here中的示例代码,以针对测试的BigQuery数据库运行简单的查询。

执行BigQueryClient client = BigQueryClient.Create(projectId);时,我得到一个运行时 FileNotFoundException ,告诉我System.Net.Http 4.1.1.3 cannot be found,内部异常显示System.Net.Http 4.0.0.0 cannot be found

我已经使用不同的版本多次卸载并重新安装了 System.Net.Http NuGet软件包,但仍然得到相同的结果。我什至只使用了常规的.Net 4.6 System.Net.Http dll并遇到了同样的问题。

如果我通过NuGet软件包管理器将 System.Net.Http 版本更改为4.0.0,则我会在同一时间获得另一个 FileNotFoundException ,但这一次表示找不到Google.Api.Gax 2.7.0.0,内部异常表示找不到Google.Api.Gax 2.5.0.0。任何版本的Google.Api.Gax都会发生相同的结果,除了如果我将Google.Api.Gax软件包降级到2.5.0.0时,我仍然会收到运行时错误提示Google.Api.Gax 2.7.0.0丢失,但是这次没有内部异常提及Google.Api.Gax 2.5.0.0

有什么作用?我过去有参考问题,但从来没有像这样

1 个答案:

答案 0 :(得分:0)

经过数小时的尝试和错误,并更改了NuGet软件包的版本,并取得了一些次要的成功,我最终发现某些DLL没有被复制到我的单元测试项目的bin文件夹中,因此出现了运行时错误。

每次我将DLL从类库的bin文件夹复制到单元测试的bin文件夹时,对于另一个DLL,我都会遇到另一个丢失的DLL异常。将它们一一复制后,最终运行了。

为什么从属DLL无法复制到引用类库的项目的bin文件夹中?

即Google.Cloud.BigQuery.V2安装在项目A中,项目B引用项目A。在项目A中引用的DLL不会复制到项目B的bin文件夹中。(即使“本地复制”设置为True!)

我必须手动复制的DLL:

  • System.Net.Http.dll
  • Microsoft.Win32.Primitives.dll(不是
  • System.Diagnostics.DiagnosticSource.dll
  • System.Security.Cryptography.X509Certificates.dll
  • Google.Apis.Bigquery.v2.dll(这特别奇怪,因为NuGet软件包明确建议您使用Google.Cloud.BigQuery.V2而不是Google.Apis.Bigquery.v2,但要使用Google.Cloud。 BigQuery.V2取决于Google.Apis.Bigquery.v2)

就参考问题而言,这是蛋糕。也许是我对VS 2017的抄袭。谁知道...?