Control Add-ins and Version Compatibility–Update

Yesterday I posted a quick tip, which quickly got some comments about it being wrong. Since I know people who commented were unlikely to say something incorrect, I went to check on, because I myself experienced difficulties that made me write that post.

So, I analyzed to see who’s right and who’s wrong, or better yet – to see why different people might get different results.

Here’s the results.

So, I stand corrected. What I wrote is not completely true. Depending on what exactly your control does, my post’s accuracy ranges from absolutely wrong, to somewhat wrong, to true. So, here’s the thing.

When your .NET control add-ins (and it’s absolutely only about .NET control add-ins, what I said about JavaScript control add-ins, my original post is correct) if you only use the OnControlAddIn event, and your control add-in does not use any of the specific functionality of the assembly you reference, then your control is going to be absolutely forward compatible, from version 6.1 (2009 SP1) all the way to 8.0 (2015).

However, backward compatibility does not work. Controls built for 2015, won’t work in 2013 R2, 2013, 2009 R2, or 2009 SP1. Likewise, controls built for 2013 R2, won’t work in 2013, 2009 R2, or 2009 SP1. Also, controls built for 2013, won’t work in 2009 R2, or 2009 SP1.

The only version which is fully backwards compatible is 2009 R2. Controls built for 2009 R2 will work with 2009 SP1.

The reason for this is simple, 2009 SP1 and 2009 R2 use the same assembly version (1.3.0.0) whereas all newer versions declare a new assembly version (7.0.0.0, 7.1.0.0, and 8.0.0.0 respectively). Now, maybe there are some tricks that may make even this work, but I didn’t manage to figure them out. I attempted copying the newer version of assemblies together with the control add-in assemblies, but it didn’t make any difference either.

So, insofar as backward compatibility is concerned, my original post is correct. However, when forward compatibility is concerned, my post is wrong.

Thanks to Johannes and Mark for pointing out the issue.

Vjeko

Vjeko has been writing code for living since 1995, and he has shared his knowledge and experience in presentations, articles, blogs, and elsewhere since 2002. Hopelessly curious, passionate about technology, avid language learner no matter human or computer.

This Post Has 6 Comments

    1. Vjeko

      Thanks 🙂 What I hate is not not knowing, but thinking that I know, while I actually don’t 🙂 You pointed out that something I said was wrong, and I was sure I wasn’t. I had to check, so – now I know 🙂

      By the way – are you sure about what you said? That 2015/2013R2 will work in 2013? I’ve just re-tried, and couldn’t make it work. I compiled in both .NET 3.5 and .NET 4.0, and 2013 only runs 2013/2009R2/2009SP1. If you made it work, please let me know how exactly.

  1. Mike Doster

    Thanks for following up on this Vjeko, very helpful.

  2. Davide

    HI Vjeko, is this forward compatibily still granted for new Dynamics nav Versions? ie. from 20016 to 2017, or better from 2017 to 2018. Or are there some cases in which it does not work? hvala Davide

Leave a Reply