What is the difference between StackExchange.Redis and StackExchange.Redis.StrongName? What is the difference between StackExchange.Redis and StackExchange.Redis.StrongName? azure azure

What is the difference between StackExchange.Redis and StackExchange.Redis.StrongName?


Do you need a strongly named Redis library? In all likelihood, especially if you never even encountered this term, the answer is no. But read on.

What is strongly named?

  • it's a .NET specific thing
  • you can choose to sign your assembly with a cryptographic key
  • this makes it possible to verify that you are actually loading/running something you expect to load/run
  • the "strong name" includes the cryptographic signature together with the the usual name, version and things like that.

Do you ever need strong names?

  • probably not unless you have specific reasons. Some of these may be:
  • historic (we used to sign our assemblies and why change now)
  • corporate policies
  • special circumstances such as something else you are using requires strong names (it used to be a requirement to have strong name if you wanted to add something to the GAC)
  • possibly security considerations

Is it a good idea to sign your assemblies?

  • there are a lot of divided opinions
  • very often strong names are a pain in so many ways with questionable benefits
  • it has been a trend lately to not use strong names unless you really must

Do you need a strongly named Redis library?

  • unless you decide or have to sign your own application which uses Redis library you don't
  • the strong names version of Redis library is identical to the other one
  • it exists solely for the reason to make lives of those who need to use strong names easier


Aside from the signed vs unsigned assemblies argument, the RedisSessionStateProvider has a dependency on StackExchange.Redis.StrongName

So if you want to use RedisSessionStateProvider, choose the StrongName version unless you want to have two dependencies.

Update: As @Matei_Radu has pointed out, Microsoft.AspNet.SignalR.Redis also has a dependency on StackExchange.Redis.StrongName

You can only have a dependency on one (either signed or unsigned) in a single assembly, but if you have multiple projects, you might have dependencies on both. It may simplify things to keep only the signed version to avoid problems


The strong name version is for developers who use strongly named assemblies in sharepoint and com+ development. The nuget package dev himself says that there is no simple answer for this question. Read the blog post here http://blog.marcgravell.com/2014/06/snk-we-need-to-talk.html