C# Google BigQuery SDK 参考问题



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

我已经安装了NuGet包Google.Cloud.BigQuery.V2(v1.3.0),它安装了大量依赖项,其中一个是System.Net.Http。

我修改了此处的示例代码,以针对测试 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

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

经过数小时的更改 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.X509Certificate.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副本是罪魁祸首。谁知道呢。。。?

最新更新