-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Newtonsoft.Json.dll release incompatible versions with same strong name #615
Comments
If something hurts, stop doing it. Don't put it in the GAC. |
To @JamesNK Even if our assembly not in the GAC it will still brake if someone (other application outside our control) will put their version into the GAC Please read my question where I explain in details where actual problem is |
This question makes totally sense. |
my 5 cents. In some cases there is no other normal choice except GAC. For example Sharepoint uses GAC for packages that we install there, so if two packages use different assemblies but with the same version - dll hell starts again :( |
I totally agrree. And that is why seriously considering SemVer should not be an option... |
Yes some time you don`t have control and have to put in GAC Even if your application does not put this assembly to the GAC but some body else does, It will break your application as well. Just imagine your application broken with some strange errors. It is not simple exception like "Can not load assembly version ..." no no no it would be Null reference exception some where deep in Newtonsoft.Json or some thing else. And it is not even your fault. It is just because somebody installed other software, and that software decided to Newtonsoft.Json.dll to GAC And then try to explain customers that it is broken because other software. |
We had similar problems with other assemblies, or solution was to build ourself, using our own snk file, so we get our own "strong name". That way, we can make sure we have unique version numbers, and the framework cannot load wront assemblies because it prefers GAC to local installation directory. |
Newtonsoft.Json release incompatible versions with same strong name, only changing the File version.
Because of this any application, that use Newtonsoft.Json, breaks if other application puts different version of Newtonsoft.Json.dll into the GAC
According to MSDN (https://msdn.microsoft.com/en-us/library/wd40t7ad(v=vs.110).aspx)
"Assemblies that have the same strong name should be identical."
This issue can easily break applications that use microsoft frameworks (e.g. Mircosoft.Data.Odata),
Azure SDK and others
Every new version (even minor) must have new Assembly version. This is only way .NET can work properly
The text was updated successfully, but these errors were encountered: