2017-09-05 9 views
9

私は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、Culture =ニュートラル、PublicKeyToken = null '

なぜ私はStackExchange.Redis.StrongNameを参照していないし、同じアセンブリバージョンでもないのですか?

+1

重複質問ここに:https://stackoverflow.com/questions/46029281/vs-net-2017-forces-using-stackexchange-redis-私csprojにこれを(下記)を追加することによって

1-2-4-0-in-asp-net-2-0-core-app –

答えて

4

"StackExchange.Redis"パッケージに条件フラグを追加しました。私は2つのマシンで2つの新しいプロジェクトでこのソリューションを試しました。なぜそれがうまく動作するか私に尋ねないでください。 Cの例のためにそこにあることをVisual Studio ASP .NETでのコアに付属して2.0が内部StackExchange.Redis.StrongNameを使用しています

<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

私はあなたの解決策を働かせることができません。これは私の設定です: ' ' 任意のアイデア? – Nodios

+0

StackRechange.Redis.StrongNameと同じItemGroup内にを移動してみてください。私はこの記事以来、レディスとは何も働いていないので、それがうまくいくとは断言できません。 – Lejdholt

0

Microsoft.Extensions.Caching.Redis 2.0、バージョン= 1.2.4.0、:\プログラムファイル\のDOTNET \ sdk \ NuGetFallbackFolder \ stackexchange.redis.strongname \ 1.2.4 \ lib \ netstandard1.5フォルダにあります。

これは、異なるバージョンのStackExchange.Redisの間で競合が発生するためです。

2

アプリケーション全体でStrongnameを使用することは可能ですが、新しい1.2.6が使用されます。問題は、Redis.Stackexchangeを追加すると、2つの異なるdllから同じ名前空間を持つことになります。 .Netコンパイラはどちらを使うべきかを知らない。 1.2.6が必要な場合は、アプリケーション全体でStrongNameバージョンを使用し、問題は解決します。

0

解決策が見つかりましたhere

<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences"> 
    <ItemGroup> 
    <ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'"> 
     <Aliases>signed</Aliases> 
    </ReferencePath> 
    </ItemGroup> 
</Target> 
関連する問題