我正在使用StackExchange.Redis和.Net Core2.0启动一个新项目。但我有个矛盾:
ConnectionMultiplexer类型同时存在于“StackExchange.Redis.StrongName,Version=1.2.4.0,Culture=neutral,PublicKeyToken=c219ff1ca8c2ce46”和“StackExchange.Redis,Version=1.2.6.0,Culture=neutral,PublicKeyToken=null”中。
为什么这个显示,即使你,我没有引用StackExchange.Redis.StrongName,它甚至不是相同的组装版本?
发布于 2017-09-06 06:02:34
我在"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>发布于 2018-02-13 03:29:06
我找到了我的解决方案这里。
将以下内容添加到csproj中:
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'">
<Aliases>signed</Aliases>
</ReferencePath>
</ItemGroup>
</Target>发布于 2017-11-14 07:41:33
可以在整个应用程序中使用Strongname,1.2.6是更新的,将被使用。问题是,当您添加Redis.Stackexchange时,您将从两个不同的dll的. .Net编译器中得到相同的名称空间,不知道要使用哪个名称空间。如果您需要1.2.6,请在整个应用程序中使用StrongName版本,没有更多的问题.
https://stackoverflow.com/questions/46047718
复制相似问题