Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core StackExchange.Redis.strong名称已被引用,但未包含在包中_Asp.net Core_Stackexchange.redis_Asp.net Core 2.0 - Fatal编程技术网

Asp.net core StackExchange.Redis.strong名称已被引用,但未包含在包中

Asp.net core StackExchange.Redis.strong名称已被引用,但未包含在包中,asp.net-core,stackexchange.redis,asp.net-core-2.0,Asp.net Core,Stackexchange.redis,Asp.net Core 2.0,我正在使用StackExchange.Redis和.NETCore2.0启动一个新项目。 但我遇到了一个冲突: “ConnectionMultiplexer”类型存在于“StackExchange.Redis.StrongName,版本=1.2.4.0,区域性=中性,PublicKeyToken=c219ff1ca8c2ce46”和“StackExchange.Redis,版本=1.2.6.0,区域性=中性,PublicKeyToken=null”中 为什么这显示我没有引用StackExchan

我正在使用StackExchange.Redis和.NETCore2.0启动一个新项目。 但我遇到了一个冲突:

“ConnectionMultiplexer”类型存在于“StackExchange.Redis.StrongName,版本=1.2.4.0,区域性=中性,PublicKeyToken=c219ff1ca8c2ce46”和“StackExchange.Redis,版本=1.2.6.0,区域性=中性,PublicKeyToken=null”中


为什么这显示我没有引用StackExchange.Redis.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>

netcoreapp2.0

Asp.Net Core 2.0附带的Microsoft.Extensions.Caching.Redis 2.0在内部使用StackExchange.Redis.strong名称,版本=1.2.4.0,例如在C:\Program Files\dotnet\sdk\NuGetFallbackFolder\StackExchange.Redis.StrongName\1.2.4\lib\netstandard1.5文件夹中


看来这会导致StackExchange.Redis的不同版本之间发生冲突。

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

我找到了解决方案

通过将以下内容添加到我的csproj中:

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

签署

重复问题:我无法让您的解决方案发挥作用。这是我的配置:
有什么想法吗?尝试移动到与StackExchange.Redis.StrongName相同的项目组中,也许这会起作用。自从这篇文章发表后,我就再也没有和Redis合作过,所以我不敢保证它会成功。你找到解决上述问题的方法了吗?这让我头疼的问题消失了。感谢您将其更改为“StackExchange.Redis”。为我工作!我不断遇到这个问题。很累,很好。谢谢你。工作得很有魅力!