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

无法在c#中运行Google Cloud PubSub,DLL问题,c#,nuget,google-cloud-pubsub,C#,Nuget,Google Cloud Pubsub,我正在将Google Cloud PubSub集成到我的c#项目中,我使用NuGet进行安装,没有任何错误。当我运行我的项目并且当它到达使用pubsub的代码时,我得到以下错误: An unhandled exception of type 'System.IO.FileLoadException' occurred in Google.Api.Gax.dll Additional information: Could not load file or assembly 'Google.A

我正在将Google Cloud PubSub集成到我的c#项目中,我使用NuGet进行安装,没有任何错误。当我运行我的项目并且当它到达使用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.api.Auth.dll,但它是1.27.1。我已经尝试了我能想到的一切,包括抓取该dll的1.21.0并使用它,但没有成功。我已经能够运行的刚刚好,没有错误


有什么想法吗?如果您需要更多信息,请告诉我。好的,我找到了Google.api.Auth 1.21.0的参考资料,它在NuGet软件包中

如果您只是添加对
Grpc.Auth
DLL的引用,您将遇到这种失败-但是如果您通过NuGet管理所有依赖项,我希望一切正常-它应该为您添加程序集绑定重定向

在不知道您的确切设置的情况下,很难说得更多-可能您的库需要程序集绑定重定向,但应用程序可以控制它们。。。特别是,如果您的应用程序只有对库DLL的引用,则会导致问题


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

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


这是一个老问题,但将来可能会对某人有所帮助。 我也被它卡住了,这确实是个问题。 在我的例子中,app.config处于错误的级别,只是处于项目级别


祝你好运

它根本不应该尝试加载Google.api.Auth 1.21.0。。。对于它来说,这是一个非常奇怪的版本。你能告诉我们更多关于项目类型(目标框架等)的信息吗?你能用一个基本上除了(比如)列出主题之外什么都不做的小项目来重现这一点吗?你能检查一下实际部署了哪个版本的Google.Api.Gax.dll吗?@JonSkeet Target framework是4.5,我正在编译类库。一切似乎都在从nuget下载正确的依赖项(Google.Api.Gax.dll是v2.0.0)。我还没能在一个小项目上复制。项目引用app.config和packages.config都将Google.api.Auth.dll显示为1.27.1。我不知道1.21.0是从哪里来的……您还有什么其他依赖项?您的库可能没有任何其他依赖项,但您的应用程序有依赖项吗?再次强调,真正能够重现这一点是关键——您可以从完整的应用程序开始并删除部分,还是从零开始并添加位直到看到问题?(我很想弄清楚这里发生了什么…@JLo:那么你能从头开始创建这个吗?如果你能以一种简单的方式复制这张照片,请提供所有的细节——当我只知道一些零碎的东西时,这很难提供帮助。@Hammy:你能分享更多关于破损的细节吗?如果你想给我发电子邮件,请发-我的电子邮件地址在我的个人资料页上。在添加FAQ条目等方面,它可能对我们非常有帮助。我仍然不确定最初是什么导致了它,我还无法复制。一个可能的原因是我不小心安装了Google.api.PubSub而不是Google.Cloud.PubSub,但是该包没有引用Grpc.Auth。我同意,我确实认为grpc.auth是原因之一。最终的解决方案是通过nuget将google.cloud.pubsub安装到我的解决方案中的每个项目,然后卸载,尽管其中一些项目一开始从未安装过它。然后我把它安装到需要它的项目中,它成功了。对不起,没有多少帮助,我可以尝试复制一些东西,如果我发现了,我会让你知道的anything@Hammy:谢谢,请执行:)在同一项目上切换计算机,此问题再次出现。我使用fusion log再次发现Grpc.Auth引用的是Google.API.Auth 1.21.0,而我的项目引用的是1.27.1。我有一个绑定重定向设置,出于某种原因,没有在日志中显示它正在重定向。由于某些特定于项目的生成后批处理文件在移动,因此问题的解决方案是.config文件与编译的程序集不在同一目录中,这可能也是原始问题的解决方案。