【问题标题】:StackExchange.Redis.StrongName is refrenced but not included as packageStackExchange.Redis.StrongName 被引用但不包含在包中
【发布时间】:2018-02-13 07:42:50
【问题描述】:

我正在使用 StackExchange.Redis 和 .Net Core 2.0 开始一个新项目。 但我遇到了冲突:

“StackExchange.Redis.StrongName, Version=1.2.4.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46”和“StackExchange.Redis, Version=1.2.6.0, Culture=neutral, PublicKeyToken=”中都存在“ConnectionMultiplexer”类型空'

为什么即使我没有引用 StackExchange.Redis.StrongName 并且它甚至不是相同的程序集版本,它也会显示?

【问题讨论】:

标签: asp.net-core stackexchange.redis asp.net-core-2.0


【解决方案1】:

我找到了我的解决方案here

通过将这个(如下)添加到我的 csproj:

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

【讨论】:

  • 将其更改为“StackExchange.Redis”。为我工作!我不断遇到这个问题。很累。
  • 不错。谢谢你。像魅力一样工作!
【解决方案2】:

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

【讨论】:

  • 这让头痛消失了。谢谢
【解决方案3】:

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

【讨论】:

  • 我无法让您的解决方案发挥作用。这是我的配置:&lt;ItemGroup&gt; &lt;PackageReference Include="Hangfire.Redis.StackExchange" Version="1.7.2" /&gt; &lt;PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" /&gt; &lt;PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" /&gt; &lt;PackageReference Include="NLog.Web.AspNetCore" Version="4.5.0-rc2" /&gt; &lt;/ItemGroup&gt; &lt;ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "&gt; &lt;PackageReference Include="StackExchange.Redis" Version="1.2.6" /&gt; &lt;/ItemGroup&gt; 有什么想法吗?
  • 尝试将 移动到与 StackExchange.Redis.StrongName 相同的 ItemGroup 中,也许这样可以。自从这篇文章以来,我没有使用过 Redis 任何东西,所以不能发誓它会起作用。
  • 您找到解决上述问题的方法了吗?
【解决方案4】:

Asp .Net Core 2.0 附带的 Microsoft.Extensions.Caching.Redis 2.0 在内部使用 StackExchange.Redis.StrongName,Version=1.2.4.0,例如在 C:\Program Files\dotnet\sdk\NuGetFallbackFolder \stackexchange.redis.strongname\1.2.4\lib\netstandard1.5 文件夹。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多