it-swarm.com.de

StackExchange.Redis.StrongName wird referenziert, aber nicht als Paket enthalten

Ich starte ein neues Projekt mit StackExchange.Redis und .Net Core 2.0. Aber ich bekomme einen Konflikt:

Der Typ 'ConnectionMultiplexer' ist sowohl in 'StackExchange.Redis.StrongName, Version = 1.2.4.0, Culture = neutral, PublicKeyToken = c219ff1ca8c2ce46' als auch in 'StackExchange.Redis, Version = 1.2.6.0, Culture = neutral, PublicKeyToken = null' vorhanden.

Warum zeigt dies auch, dass ich nicht auf StackExchange.Redis.StrongName verweise und nicht einmal dieselbe Assembly-Version?

11
Lejdholt

Ich habe dem "StackExchange.Redis" -Paket ein bedingtes Flag hinzugefügt, damit es funktioniert. Ich habe diese Lösung bei zwei neuen Projekten auf zwei Maschinen ausprobiert. Fragen Sie mich nicht, warum es so funktioniert.

    <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

Ich habe meine Lösung gefunden hier .

Wenn Sie dies (weiter unten) zu meinem Csproj hinzufügen:

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

Es ist möglich, Strongname in Ihrer gesamten Anwendung zu verwenden, 1.2.6 ist neuer und wird verwendet. Das Problem ist, wenn Sie Redis.Stackexchange hinzufügen, haben Sie den gleichen Namespace aus zwei verschiedenen DLLs. Der .Net-Compiler weiß nicht, welcher verwendet werden soll. Wenn Sie 1.2.6 benötigen, verwenden Sie die StrongName-Version in Ihrer gesamten Anwendung und keine Probleme mehr.

5
André

Microsoft.Extensions.Caching.Redis 2.0, das mit Asp .Net Core 2.0 ausgeliefert wird, verwendet intern StackExchange.Redis.StrongName, Version = 1.2.4.0, das sich beispielsweise in C:\Programme\dotnet\sdk\NuGetFallbackFolder\stackexchange befindet. redis.strongname\1.2.4\lib\netstandard1.5 Ordner. 

Es sieht so aus, als ob es einen Konflikt zwischen verschiedenen Versionen von StackExchange.Redis gibt.

0
Glory