2017-06-27 47 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

相關問題