Modules and dependent assemblies

TL;DR;

  • antony will ignore your assemblies, if we provide an other version of assemblies, antony uses itself

  • you might get a MethodNotFoundExcepton if you use methods, which aren’t present in our versions of your assemblies

  • You can disable the behavior passing /skipAutomaticAssemblyBinding as a parameter to the client

  • So try avoid using special methods in common assemblies. Check agains the assemblies shipped with antony

The Problem

As you can extend antony’s desktop client and administator with custom modules, you usally will ship some assemblies with it. If you want to integrate into Zoom you might ship a special zoom assembly. This is no problem as long as no other module ships this dll too. This will also raise problems, if you ship assemblies antony already provides.

The Solution

In order to garantuee stablity of our antony client to our customers we will ignore the assemblies you ship, if they already in antonys scope.

For example antony ships the Newtonsoft.Json assembly like nearly every other application in the world. The version we provide at this moment has the version 12.0.3. So if your module uses this assembly in version 13.0.1, you can develop and compile against this. You will also deploy the version 13 within your setup.

If you start antony with your shipped version 13.0.1 antony will detect your assembly and automatically create an assemblyRedirect from 13.0.1 to 12.0.3. If you relay on a new method within this assembly, you will get a MethodNotFoundException.

Details

The assemblies and the dependent modules will be checked on every startup of the antony Client. If we detect changes we’ll generate a special SCOM.Groupware.exe.config file containing the redirection. In the example above this will contain the entry below

<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="13.0.1.0" newVersion="12.0.3.0" /> </dependentAssembly>

You might find more than this entry for the Newtonsoft.Json assembly, if other modules than yours ship some other versions.

If you detect some changes to be applied in this file we’ll restart the whole client. The next run, we will not detect changes, so a restart is not neccessary.