Lej*_*olt 13 stackexchange.redis asp.net-core asp.net-core-2.0
我正在使用StackExchange.Redis和.Net Core 2.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,它甚至不是相同的汇编版本?
小智 10
我在这里找到了解决方案.
通过在我的csproj中添加(下面):
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'">
<Aliases>signed</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
可以在整个应用程序中使用Strongname,1.2.6更新并将被使用.问题是当你添加Redis.Stackexchange时,你将从两个不同的dll中获得相同的命名空间..Net编译器不知道使用哪一个.如果您需要1.2.6,请在整个应用程序中使用StrongName版本,不再有问题....
我在“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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |