2017-09-07 15 views
5

पर आधारित सी # नमूना प्रोजेक्ट चलाते समय निर्भरता समस्या मैं नमूना सी # प्रोजेक्ट में Google क्लाउड पबसब को एकीकृत करने पर काम कर रहा हूं, मैं सी # के साथ एक नौसिखिया हूं क्योंकि यह शायद मेरी कंपनी में ही काम करेगा सी # में लिखे गए गेम के साथ एकीकृत करने के कुछ आवश्यकताओं के कारण। मैं Google.Cloud.PubSub.V1.0.0-beta13 स्थापित करने के लिए इस्तेमाल किया और NuGet स्थापना सफलतापूर्वक चला गया, लेकिन जब मैं डॉक्स मैं निम्नलिखित त्रुटि मिलती है का उपयोग कर बनाई नमूना कोड को चलाने के लिए प्रयास करें:क्लाउड पबब

C:/Users/MyUser/RiderProjects/TestConsole/TestConsole/bin/Debug/TestConsole.exe 

Unhandled Exception: System.IO.FileLoadException: 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) 
    at Google.Api.Gax.TaskExtensions.WaitWithUnwrappedExceptions(Task task) in C:\Users\jon\Test\Projects\gax-dotnet\releasebuild\src\Google.Api.Gax\TaskExtensions.cs:line 48 
    at Google.Api.Gax.Grpc.ChannelPool.GetChannel(ServiceEndpoint endpoint) in C:\Users\jon\Test\Projects\gax-dotnet\releasebuild\src\Google.Api.Gax.Grpc\ChannelPool.cs:line 92 
    at Google.Cloud.PubSub.V1.PublisherClient.Create(ServiceEndpoint endpoint, PublisherSettings settings) in C:\Users\jon\Test\Projects\google-cloud-dotnet\releasebuild\apis\Google.Cloud.PubSub.V1\Google.Cloud.PubSub.V1\PublisherClient.cs:line 558 
    at TestConsole.Program.CreateTopic(String projectId, String topicId) in C:\Users\MyUser\RiderProjects\TestConsole\TestConsole\Program.cs:line 11 
    at TestConsole.Program.Main(String[] args) in C:\Users\MyUser\RiderProjects\TestConsole\TestConsole\Program.cs:line 32 

मैंने फिर Google.Apis.Auth को 1.21.0 पर डाउनग्रेड करने का प्रयास किया लेकिन फिर समस्या Google को "Google.Api.Gax, संस्करण = 1.0.1.0" लोड नहीं कर सका और फिर (यदि मैं निर्भरता को डाउनग्रेड करना जारी रखता हूं) Google पर। Protobuf 3.2 .0.0, फिर Google.Apis.Core 1.24.1 पर और फिर "Google.Apis.Auth 1.21.0 लोड नहीं हो सका" तो मुझे लगता है कि समस्या कहीं और है।

इस निर्भरता मुद्दे का क्या कारण बनता है? अगर मैं गिथब से Google Pubsub नमूना प्रोजेक्ट लोड करता हूं तो मुझे कोई समस्या नहीं मिलती है, भले ही packages.config मेरे प्रोजेक्ट में से एक जैसा है।

using Google.Cloud.PubSub.V1; 
using Google.Protobuf; 

namespace TestConsole 
{ 
    internal class Program 
    { 

     public static object CreateTopic(string projectId, string topicId) 
     { 
      var publisher = PublisherClient.Create(); 

      var topicName = new TopicName(projectId, topicId); 
      var message = new PubsubMessage 
      { 
       // The data is any arbitrary ByteString. Here, we're using text. 
       Data = ByteString.CopyFromUtf8("Hello Cloud Pub/Sub!"), 
       // The attributes provide metadata in a string-to-string 
       // dictionary. 
       Attributes = 
       { 
        { "description", "Simple text message" } 
       } 
      }; 
      publisher.Publish(topicName, new[] { message }); 
      return 0; 
     } 


     public static void Main(string[] args) 
     { 
      CreateTopic("MyProjectID", "MyProjectTopic"); 
     } 
    } 
} 

और मेरे packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Google.Api.CommonProtos" version="1.0.0" targetFramework="net452" /> 
    <package id="Google.Api.Gax" version="1.0.1" targetFramework="net452" /> 
    <package id="Google.Api.Gax.Grpc" version="1.0.1" targetFramework="net452" /> 
    <package id="Google.Apis" version="1.24.1" targetFramework="net452" /> 
    <package id="Google.Apis.Auth" version="1.24.1" targetFramework="net452" /> 
    <package id="Google.Apis.Core" version="1.24.1" targetFramework="net452" /> 
    <package id="Google.Cloud.Iam.V1" version="1.0.0-beta09" targetFramework="net452" /> 
    <package id="Google.Cloud.PubSub.V1" version="1.0.0-beta09" targetFramework="net452" /> 
    <package id="Google.Protobuf" version="3.2.0" targetFramework="net452" /> 
    <package id="Grpc.Auth" version="1.4.0" targetFramework="net452" /> 
    <package id="Grpc.Core" version="1.4.0" targetFramework="net452" /> 
    <package id="Newtonsoft.Json" version="10.0.2" targetFramework="net452" /> 
    <package id="System.Interactive.Async" version="3.1.1" targetFramework="net452" /> 
    <package id="System.Net.Http" version="4.3.1" targetFramework="net425" /> 
    <package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net452" /> 
</packages> 

मैं सवार 2017/01/01 का उपयोग अपने प्रोजेक्ट को चलाने के लिए और मैं .NET फ़्रेमवर्क 4.5 पर चला:

यहाँ मेरी Program.cs है। 2।

कृपया ध्यान दें मैं पहले से ही पता है कि यह एक बहुत समान प्रश्न पहले से ही अपने कम "प्रतिष्ठा" मैं यह टिप्पणी नहीं कर सकता (क्या आप जानते हैं की वजह से इस URL Unable to run Google Cloud PubSub in c#, DLL problems पर पोस्ट किया जाता है लेकिन, मैं आमतौर पर दस्तावेज और सवाल के लिए खोज पढ़ने की कोशिश पहले से ही उत्तर दिया है और डुप्लिकेट बनाने से बचने का प्रयास करें, यही कारण है कि मैंने इस साइट पर एक उच्च प्रतिष्ठा नहीं बनाई है) और जिस व्यक्ति ने सवाल उठाया वह बिना किसी जानकारी के अपने आप को हल कर लेता है। जवाब में लिखा है:

...if you manage all the dependencies via NuGet, I'd expect it to be okay - it should add assembly binding redirects for you.

जो यह मैं पहले से ही कर रहा हूँ मुझे लगता है।

+0

हाय! क्या आपने लिंक किए गए प्रश्न के स्वीकृत उत्तर से अंतिम सुझाव की कोशिश की है? "[...] या एप्लिकेशन के साथ-साथ लाइब्रेरी में Google.Cloud.PubSub.V1 का संदर्भ जोड़ें, जिस बिंदु पर NuGet आपके लिए सभी निर्भरता प्रबंधन करेगा।" –

+1

मैंने देखा एक और विवरण है कि आप प्रश्न में '' 'बीटा 13''' का उल्लेख करते हैं, लेकिन' '' beta09''' '' 'packages.config''' फाइल में संदर्भित है। क्या कोई संस्करण कहीं मिस्चैच हो सकता है? –

+1

हाय @ मार्सेलोरोमानी मैंने इसे विभिन्न संस्करणों के साथ करने की कोशिश की, इसलिए विसंगति शायद चीजों को संभालने की कोशिश करने के विभिन्न तरीकों से बचे हुए थे। इसके अलावा मैंने ऐप में पहले से ही संदर्भ जोड़ा है लेकिन मुझे नहीं पता कि लाइब्रेरी में इसे जोड़ने का क्या अर्थ है। –

उत्तर

0

मैं क्रियान्वित करने शुरू कर दिया:

PM> get-package | where {$_.Id -like 'Google*'} | % { uninstall-package -Force $_.Id -ProjectName $_.ProjectName} 

फिर पबसब स्थापित विजुअल स्टूडियो के साथ मेरी परियोजना और मैंने देखा कि यह निर्भरता त्रुटियों को ट्रिगर नहीं करता है। तो, यह राइडर के साथ एक मुद्दा प्रतीत होता है। मैं शायद स्पष्टीकरण के लिए जेटब्रेन से पूछूंगा, लेकिन अगर किसी के पास बेहतर जवाब है, तो कृपया अपनी राय पोस्ट करें।

1

एक नई शुरुआत का प्रयास करें: Nuget पैकेज प्रबंधक कंसोल में यह आदेश चलाकर सभी गूगल निर्भरता का सफाया: जेफरी के सुझाव के बाद

PM> install-package Google.Cloud.PubSub.V1 -pre 
+0

नमस्ते, Nuget पैकेज प्रबंधक कंसोल का उल्लेख करने के लिए धन्यवाद, जब ट्यूटोरियल्स का पालन किया जाता है तो मैंने हमेशा पावरहेल का उपयोग किया क्योंकि मुझे इसके अस्तित्व से अवगत नहीं था और क्योंकि मुझे इसे राइडर में नहीं मिला है। आपके उत्तर ने सीधे समस्या का समाधान नहीं किया लेकिन विजुअल स्टूडियो के साथ प्रोजेक्ट चलाकर मैं इसे काम करने में सक्षम था। शायद राइडर पर एक बग (यह अभी भी इस पर काम नहीं करता है)? –

संबंधित मुद्दे