Asp.net-Core
StackExchange.Redis.StrongName 被引用但不包含在包中
我正在使用 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 並且它甚至不是相同的程序集版本,它也會顯示?
我在這裡找到了我的解決方案。
通過將此(如下)添加到我的 csproj 中:
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences"> <ItemGroup> <ReferencePath Condition="'%(FileName)' == 'StackExchange.Redis.StrongName'"> <Aliases>signed</Aliases> </ReferencePath> </ItemGroup> </Target>
可以在整個應用程序中使用 Strongname,1.2.6 較新,將被使用。問題是當您添加 Redis.Stackexchange 時,您將擁有來自兩個不同 dll 的相同命名空間。.Net 編譯器不知道使用哪一個。如果您需要 1.2.6,請在整個應用程序中使用 StrongName 版本,不會再有任何問題….