Клиент StackExchange.Рэдис.StrongName рефренируется, но не входит в пакет
Я начинаю новый проект с использованием StackExchange.Redis и .Net Core 2.0. Но я получаю конфликт:
тип "ConnectionMultiplexer" существует в обоих " StackExchange.Рэдис.Строгое_имя, версия=1.2.4.0, культура=нейтральных, PublicKeyToken=c219ff1ca8c2ce46 " и " клиент StackExchange.Redis, версия=1.2.6.0, культура=нейтральная, PublicKeyToken=null'
Почему это показывает, что даже ты я не ссылаюсь на StackExchange.Рэдис.Строгое_имя и дело даже не в одной сборке версия?
4 ответов
можно использовать Strongname во всем приложении, 1.2.6 новее и будет использоваться. Проблема при добавлении Рэдис.Stackexchange у вас будет одно и то же пространство имен из двух разных dll. Компилятор .Net не знает, какой из них использовать. Если вам нужно 1.2.6, используйте Строгое_имя версия в приложении и нет больше проблем ....
Я добавил условный флаг в " 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>
Я нашел решение здесь.
добавив Это (ниже) в мой csproj:
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'">
<Aliases>signed</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
Microsoft.Увеличение.Кэширование.Redis 2.0, который поставляется с Asp .Net Core 2.0, внутренне использует StackExchange.Рэдис.StrongName, Version=1.2.4.0, что есть например в C:\Program файлы\dotnet\sdk\NuGetFallbackFolder\stackexchange.Рэдис.strongname\1.2.4\lib\netstandard1.5 папка.
таким образом, это вызывает конфликт между различными версиями StackExchange.Рэдис.