2017-06-27 100 views
2

我正在将Google Cloud PubSub集成到我的c#项目中,我使用NuGet安装1.0.0-beta11,完全没有任何错误。当我跑我的项目,当它到达使用发布订阅的代码,我得到以下错误:无法在c#中运行Google Cloud PubSub,DLL问题

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就好,没有错误。

有什么想法?让我知道你是否需要更多信息

+0

它不应该尝试加载Google.Apis.Auth 1.21.0 ...这是一个非常奇怪的版本,它依赖于它。你能告诉我们更多关于项目类型(目标框架等)吗?你是否能够通过一个小项目来重现这一点,这些项目除了(比如说)列表主题之外基本上什么也不做?你能否检查哪个版本的Google.Api.Gax.dll实际上已经部署? –

+0

@JonSkeet目标框架是4.5,我正在编译到一个类库。一切似乎都从nuget下载正确的依赖关系(Google.Api.Gax.dll是v2.0.0)。我还没有能够重现一个小项目。项目引用,app.config和packages.config都显示Google.Apis.Auth.dll为1.27.1。我不知道1.21.0是从哪里来的... – Hammy

+1

你有什么其他的依赖关系?也许是引入1.21.0的其中之一? –

回答

2

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

如果你只需要添加到Grpc.Auth DLL的引用,你会得到这样的失败 - 但如果你管理所有通过的NuGet依赖关系,我希望它是好的 - 它应该添加组件绑定重定向你。

不知道您的具体设置,这是相当棘手的说不止于此 - 它可能是你的需要组装绑定重定向,但应用是在他们的控制......,尤其是,如果您的应用程序只有一个对库DLL的引用,这会导致问题。

作为一种解决方法,您可以手动添加程序集绑定重定向(确切的方式取决于应用程序类型),也可以在应用程序以及库中添加对Google.Cloud.PubSub.V1的引用,此时NuGet会为你做所有的依赖处理。

+0

谢谢,这有助于解决问题 – Hammy

+0

@Hammy:你能分享破损的更多细节吗?如果您想给我发电子邮件,请 - 我的电子邮件地址位于我的个人资料页面上。对于我们添加常见问题解答条目等可能会非常有帮助。 –

+0

我还不确定是什么原因造成的,我一直无法重现。一个可能的原因是我不小心安装了Google.Apis.PubSub而不是Google.Cloud.PubSub,但是那个包没有引用Grpc.Auth。我同意,我认为grpc.auth是原因的一部分。该修复程序最终将安装,然后通过nuget将google.cloud.pubsub卸载到解决方案中的每个项目中,即使其中一些项目从未安装过它。然后我将它安装到需要它的项目中,并且工作正常。 – Hammy

相关问题