2017-09-05 9 views
9

के रूप में शामिल नहीं है I StackExchange.Redis और .Net Core 2.0 का उपयोग कर एक नई प्रोजेक्ट शुरू कर रहा हूं।StackExchange.Redis.StrongName को पुनर्प्राप्त किया गया है लेकिन पैकेज

प्रकार 'ConnectionMultiplexer' दोनों में मौजूद है 'StackExchange.Redis.StrongName, संस्करण = 1.2.4.0, संस्कृति = तटस्थ, PublicKeyToken = c219ff1ca8c2ce46' और 'StackExchange.Redis, संस्करण = 1.2: लेकिन मैं एक संघर्ष मिलता है। 6.0, संस्कृति = तटस्थ, PublicKeyToken = शून्य '

यह क्यों दिखा रहा है कि मैं StackExchange.Redis.StrongName का संदर्भ नहीं दे रहा हूं और यह भी एक ही असेंबली संस्करण नहीं है?

+1

डुप्लिकेट यहाँ प्रश्न: https://stackoverflow.com/questions/46029281/vs-net-2017-forces-using-stackexchange-redis- 1-2-4-0-इन-एएसपी-नेट-2-0-कोर-ऐप –

उत्तर

4

मैंने "StackExchange.Redis" पैकेज में एक सशर्त ध्वज जोड़ा, जो इसे काम करता है। मैंने इस मशीन को दो मशीनों पर दो नई परियोजनाओं पर आजमाया। मुझसे मत पूछो कि यह क्यों काम करता है।

<Project Sdk="Microsoft.NET.Sdk.Web"> 
     <PropertyGroup> 
     <TargetFramework>netcoreapp2.0</TargetFramework> 
     </PropertyGroup> 

     <ItemGroup> 
     <Folder Include="wwwroot\" /> 
     </ItemGroup> 

     <ItemGroup> 
     <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
     </ItemGroup> 
     <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> 
     <PackageReference Include="StackExchange.Redis" Version="1.2.6" /> 
     </ItemGroup> 

    </Project> 
+0

यह काम करता है। साझा करने के लिए धन्यवाद! – Shimmy

+0

मुझे काम करने का आपका समाधान नहीं मिल रहा है। यह मेरी कॉन्फ़िगरेशन है: ' <पैकेजरेंसेंस शामिल =" हैंगफायर.रेडिस.स्टैक एक्सचेंज "संस्करण =" 1.7.2 "/> <पैकेजरेंसेंस शामिल =" माइक्रोसॉफ्ट.एस्पनेट कॉर.एल "संस्करण =" 2.0.5 "/> <पैकेजरेंसेंस शामिल = "माइक्रोसॉफ्ट। विज़ुअल स्टूडियो। वेब.कोड जेनरेशन। डिज़ाइन" संस्करण = "2.0.1" /> <पैकेजरेंसेंस शामिल = "NLog.Web.AspNetCore" संस्करण = "4.5.0-आरसी 2" /> ' किसी भी विचार? – Nodios

+0

उसी आइटम समूह के अंदर StackExchange.Redis.StrongName के रूप में स्थानांतरित करने का प्रयास करें, शायद यह काम करेगा। मैंने इस पोस्ट के बाद से रेडिस के साथ कुछ भी काम नहीं किया है, इसलिए कसम खाता नहीं है कि यह काम करेगा। – Lejdholt

0

Microsoft.Extensions.Caching.Redis 2.0 कि Asp नेट कोर के साथ जहाजों 2.0 आंतरिक StackExchange.Redis.StrongName का उपयोग करता है, संस्करण = 1.2.4.0, सी में उदाहरण के लिए है कि वहाँ: \ Program Files \ डॉटनैट \ sdk \ NuGetFallbackFolder \ stackexchange.redis.strongname \ 1.2.4 \ lib \ netstandard1.5 फ़ोल्डर।

तो ऐसा लगता है कि यह StackExchange.Redis के विभिन्न संस्करणों के बीच एक संघर्ष का कारण बनता है।

2

अपने पूरे एप्लिकेशन में स्ट्रॉन्गनाम का उपयोग करना संभव है, 1.2.6 नया है और इसका उपयोग किया जाएगा। समस्या यह है कि जब आप Redis.Stackexchange जोड़ते हैं तो आपके पास दो अलग-अलग डीएल के समान नामस्थान होगा। नेट कंपाइलर नहीं जानता कि किस का उपयोग करना है। यदि आपको 1.2.6 की आवश्यकता है, तो अपने एप्लिकेशन में स्ट्रॉन्गनाम संस्करण का उपयोग करें और कोई और समस्या नहीं ....

0

मुझे अपना समाधान here मिला।

मेरी csproj को यह (नीचे) को जोड़ कर:

<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences"> 
    <ItemGroup> 
    <ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'"> 
     <Aliases>signed</Aliases> 
    </ReferencePath> 
    </ItemGroup> 
</Target> 
संबंधित मुद्दे