{"action":"created","issue":{"url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/26","labels_url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/26/comments","events_url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/26/events","html_url":"https://github.com/MscrmTools/XrmToolBox/issues/26","id":58555174,"number":26,"title":"It is possible to load two copies of the same plugin by changing `dll` name","user":{"login":"shytikov","id":1185905,"avatar_url":"https://avatars.githubusercontent.com/u/1185905?v=3","gravatar_id":"","url":"https://api.github.com/users/shytikov","html_url":"https://github.com/shytikov","followers_url":"https://api.github.com/users/shytikov/followers","following_url":"https://api.github.com/users/shytikov/following{/other_user}","gists_url":"https://api.github.com/users/shytikov/gists{/gist_id}","starred_url":"https://api.github.com/users/shytikov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shytikov/subscriptions","organizations_url":"https://api.github.com/users/shytikov/orgs","repos_url":"https://api.github.com/users/shytikov/repos","events_url":"https://api.github.com/users/shytikov/events{/privacy}","received_events_url":"https://api.github.com/users/shytikov/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MscrmTools/XrmToolBox/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-02-23T08:08:43Z","updated_at":"2015-03-31T08:25:47Z","closed_at":null,"body":"`XrmToolBox` will load same plugin twice if its `dll` will be copied to the `XTB` folder with different name.\r\n\r\nIt is potential flaw, since from time to time plugins may change names of their dlls. For example in case if plugin scope was increased, and it become something more general, than it was before. Or, for example if `XTB` will require all plugins to comply some naming conversion in the future. In this case, `XTB` will find both old and new version of plugins in the folder.\r\n\r\nI think application should rely on plugin unique identifier and its version. Among two plugins with same `id` but different versions, greater version should be taken.\r\n\r\nIn case of same ids, same versions, but different names, user should explicitly make a decision what behavior is desirable:\r\n\r\n* Remove one of plugins and load other;\r\n* Load both;"},"comment":{"url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/comments/87993242","html_url":"https://github.com/MscrmTools/XrmToolBox/issues/26#issuecomment-87993242","issue_url":"https://api.github.com/repos/MscrmTools/XrmToolBox/issues/26","id":87993242,"user":{"login":"MscrmTools","id":10774317,"avatar_url":"https://avatars.githubusercontent.com/u/10774317?v=3","gravatar_id":"","url":"https://api.github.com/users/MscrmTools","html_url":"https://github.com/MscrmTools","followers_url":"https://api.github.com/users/MscrmTools/followers","following_url":"https://api.github.com/users/MscrmTools/following{/other_user}","gists_url":"https://api.github.com/users/MscrmTools/gists{/gist_id}","starred_url":"https://api.github.com/users/MscrmTools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MscrmTools/subscriptions","organizations_url":"https://api.github.com/users/MscrmTools/orgs","repos_url":"https://api.github.com/users/MscrmTools/repos","events_url":"https://api.github.com/users/MscrmTools/events{/privacy}","received_events_url":"https://api.github.com/users/MscrmTools/received_events","type":"User","site_admin":false},"created_at":"2015-03-31T08:25:47Z","updated_at":"2015-03-31T08:25:47Z","body":"There is not a lot of tutorials on MEF but I found this one which does exactly what I'm trying to achieve : using UserControls as plugins\r\n\r\nThis tutorial shows how developers dealt with \"plugins\" before MEF (what I am basically doing today) and how to implement MEF.\r\n\r\nMEF has to be used if we want to be able to update plugins right in XrmToolBox since using MEF does not lock assemblies since they are shadow copied elsewhere. I jus thave to validate communication between plugins and main application (requesting a connection, updating connection, etc.)\r\n\r\nHere is the link: www.abhisheksur.com/2011/08/steps-to-write-plugin-based-application.html\r\n"}}