StackExchange.Redis.StrongName是refrenced但不包含在包中

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)


And*_*dré 5

可以在整个应用程序中使用Strongname,1.2.6更新并将被使用.问题是当你添加Redis.Stackexchange时,你将从两个不同的dll中获得相同的命名空间..Net编译器不知道使用哪一个.如果您需要1.2.6,请在整个应用程序中使用StrongName版本,不再有问题....


Lej*_*olt 4

我在“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)