无法在c#中运行Google Cloud PubSub,DLL问题

时间:2017-06-27 01:24:39

标签: c# nuget google-cloud-pubsub

我正在努力将Google Cloud PubSub集成到我的c#项目中,我使用NuGet来安装1.0.0-beta11,完全没有错误。当我运行我的项目并且它到达使用pubsub的代码时,我收到以下错误:

An unhandled exception of type 'System.IO.FileLoadException' occurred in 
 Google.Api.Gax.dll

Additional information: Could not load file or assembly 'Google.Apis.Auth, Version=1.21.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

NuGet确实安装了所有依赖项,包括Google.Apis.Auth.dll,但它是1.27.1。我已经尝试了我能想到的一切,包括抓住那个dll的1.21.0并使用它,但没有成功。我已经能够正常运行.net sample而没有错误。

有什么想法?如果您需要更多信息,请告诉我们

3 个答案:

答案 0 :(得分:2)

好的,我已经找到了对Google.Apis.Auth 1.21.0的引用 - 它位于Grpc.Auth NuGet包中。

如果您只是添加对Grpc.Auth DLL的引用,那么您将会遇到此类故障 - 但如果您通过NuGet管理所有依赖项,我会' d期望它没关系 - 它应该为你添加程序集绑定重定向。

在不知道确切设置的情况下,说出更多内容非常棘手 - 可能是您的需要程序集绑定重定向,但应用程序是控制它们...特别是,如果您的应用程序只引用库DLL,那将导致问题。

作为一种解决方法,您可以手动添加程序集绑定重定向(确切的方法取决于应用程序类型),或者只是在应用程序和库中添加对Google.Cloud.PubSub.V1的引用,此时NuGet将为您完成所有依赖处理。

答案 1 :(得分:1)

您可以将以下内容添加到app.config文件中。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Google.Apis.Auth" publicKeyToken="4b01fa6e34db77ab" culture="neutral" />
      <bindingRedirect oldVersion="1.21.0.0-1.35.1.0" newVersion="1.35.1.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

答案 2 :(得分:0)

旧问题,但也许将来会对某人有所帮助。 也被卡住了,这确实是bindingRedirect的问题。 就我而言,是app.config处于错误的级别,只是在项目级别。

祝你好运