web-dev-qa-db-fra.com

StackExchange.Redis.StrongName est référencé mais n'est pas inclus en tant que package.

Je commence un nouveau projet en utilisant StackExchange.Redis et .Net Core 2.0. Mais j'obtiens un conflit:

Le type 'ConnectionMultiplexer' existe dans 'StackExchange.Redis.StrongName, Version = 1.2.4.0, Culture = neutre, PublicKeyToken = c219ff1ca8c2ce46' et 'StackExchange.Redis, Version = 1.2.6.0, Culture = neutre, PublicKeyToken = null'

Pourquoi cela montre-t-il que même si je ne fais pas référence à StackExchange.Redis.StrongName et que ce n'est même pas la même version Assembly?

11
Lejdholt

J'ai ajouté un drapeau conditionnel au paquetage "StackExchange.Redis", qui le fait fonctionner. J'ai essayé cette solution sur deux nouveaux projets sur deux machines. Ne me demandez pas pourquoi cela fonctionne tho.

    <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>
4
Lejdholt

J'ai trouvé ma solution ici .

En ajoutant ceci (ci-dessous) à mon csproj:

<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
  <ItemGroup>
    <ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'">
      <Aliases>signed</Aliases>
    </ReferencePath>
  </ItemGroup>
</Target>
7
Alvin Lim

Il est possible d’utiliser Strongname dans l’ensemble de votre application. La version 1.2.6 est plus récente et sera utilisée. Le problème est que lorsque vous ajoutez Redis.Stackexchange, vous aurez le même espace de noms à partir de deux dll différentes. Le compilateur .Net ne sait pas lequel utiliser. Si vous avez besoin de 1.2.6, utilisez la version StrongName dans l’ensemble de votre application et ne posez plus de problèmes ....

5
André

Microsoft.Extensions.Caching.Redis 2.0 livré avec Asp .Net Core 2.0 utilise en interne StackExchange.Redis.StrongName, Version = 1.2.4.0, par exemple dans C:\Program Files\dotnet\sdk\NuGetFallbackFolder\stackexchange. redis.strongname\1.2.4\lib\netstandard1.5 dossier. 

Il semble donc que cela provoque un conflit entre les différentes versions de StackExchange.Redis.

0
Glory