DynamoDS / DynamoRevit

Dynamo Libraries for Revit
https://dynamobim.org
328 stars 184 forks source link

Assembly version check issue. Use strong named 3rd party assemlies? #2086

Open KennanChan opened 6 years ago

KennanChan commented 6 years ago

Dynamo version

1.3.1

Revit version

2018

Operating system

Windows 7 x64

What did you do?

Loading both dynamo and another addin developed by myself

What did you expect to see?

Both addins work fine and no conflicts

What did you see instead?

Dynamo popups a window to inform me that there are some conflicts on the version of a third party assemly called "RestSharp" which is already loaded by my addin and this will possibly make dynamo unstable.

Actually, at the beginning of my development. It took me really much to find out this dll hell caused by Dynamo. My addin ran into this problem because dynamo loaded an older version in advance. To solve it, I finnally compiled a strong named "RestSharp" then everything is fine.

Until recently, one of my users report this to me: h6j 3 lshnq 69m 90qzxud

In English, it tells the user that Dynamo detects some problems which will make Dynamo unstable. And my addin caused this. Dynamo suggests the user to uninstall the addin causing the problem.

That's definitely unfair!!!!!!!!!!

In fact, users don't know exactly what happened and they would probably choose to trust Dynamo and uninstall the so-called problem addin.

This problem can be easily solved if Dynamo chooses to use strong named 3rd party assemblies rather than warning the users. This problem could result in loss of users for many other addins and I would suggest Dynamo to fix it soon.

KennanChan commented 6 years ago

Anyone maintaining issues in Dynamo team?

jnealb commented 6 years ago

@kronz @Racel @mjkkirschner @smangarole Ping. @KennanChan Yes, we are. Thanks for your report.

KennanChan commented 5 years ago

Well, may be there is a language problem. Below is the word to word translation to the Dynamo exceptions. Hope anyone reading about this issue can understand what I am saying.

System.IO.FileLoadException Dynamo detects some conflicts on some of the components, which may cause Dynamo to be unstable. If any problem is detected, please uninstall the addin or package and contact the vendor. Details: Dynamo detects that an incompatible version of the component "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null" has already been loaded when trying to load "Greg, Version=1.0.5959.26179, Culture=neutral, PublicKeyToken=null". Another Revit addin may have loaded this component, please try to uninstall this addin and then restart Dynamo. Dynamo may be unstable in current state. One of the following components may have loaded the incompatible version: GoujianwuTools, GoujianwuService

System.IO.FileLoadException Dynamo detects some conflicts on some of the components, which may cause Dynamo to be unstable. If any problem is detected, please uninstall the addin or package and contact the vendor. Details: Dynamo detects that an incompatible version of the component "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null" has already been loaded when trying to load "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null". Another Revit addin may have loaded this component, please try to uninstall this addin and then restart Dynamo. Dynamo may be unstable in current state. One of the following components may have loaded the incompatible version: GoujianwuTools, GoujianwuService

System.IO.FileLoadException Dynamo detects some conflicts on some of the components, which may cause Dynamo to be unstable. If any problem is detected, please uninstall the addin or package and contact the vendor. Details: Dynamo detects that an incompatible version of the component "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null" has already been loaded when trying to load "DynamoPackages, Version=1.3.1.1736, Culture=neutral, PublicKeyToken=null". Another Revit addin may have loaded this component, please try to uninstall this addin and then restart Dynamo. Dynamo may be unstable in current state. One of the following components may have loaded the incompatible version: GoujianwuTools, GoujianwuService

Looking forward a reply from Dynamo team!

KennanChan commented 5 years ago

Addition: GoujianwuTools.dll and GoujianwuService.dll are both assemblies in my addin. They both referenced the strong named "RestSharp, Version=100.0.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75" which is compiled by myself.

KennanChan commented 5 years ago

More users reported this problem on newer versions of Dynamo, e.g 2.0.1 They didn't trust us and some of them had to uninstall our addin. Could anyone just give a reply?

Racel commented 5 years ago

@KennanChan Thanks for your feedback. We currently are not planning to use strong name assemblies or planning on isolating our dependencies from that of Revit's other addins. We recommend aligning to versions which Revit or Dynamo use. At times, we also have assembly conflicts with Revit and work to align our version dependencies with Revit as it is the host application. Where this is not possible, we would recommend doing like you did and either using strong naming or assembly merging. But, this will only work for managed dependencies as far as we know.

Regarding the error messaging in the notification center, we could potentially tweak this or make it less sensitive to strong named assemblies, but then it may produce false negatives. We are open to any suggestions you may have. Currently, the wording in the error messages explains that a problem could be present and not that there is actually one.

We are currently discussing this topic internally and considering for next release as dependency management of addins and packages is of great importance to the future of Dynamo.