cancel
Showing results for 
Search instead for 
Did you mean: 

Make it possible for CLR Bridge to use more recent dependent assemblies than specified in the caller

0 Kudos

Make it possible for CLR Bridge to use more recent dependent assemblies than specified in the caller

Request is based on the case #00256020 accepted by SmartBear Support. But they would like to track how demanded is the requested improvement.

 

Problem:

CLR Bridge in TestComplete in its current implementation works like rundll32.exe Windows utility. I.e. it just passes the call to requested method from the given .Net assembly (assembly A) to .Net runtime and processes returned result. If assembly A uses functionality of some other assembly B, information about this assembly (name, version, culture and public key token) is stored in assembly A during compile time. This means that exactly this version of assembly B must be accessible to .Net runtime during runtime.

For the regular .Net executables (.exe modules) it is possible to configure in the .manifest file that if the required version of some assembly is absent but there is a higher version then .Net runtime should use this assembly.

This is not easily configurable for library assemblies (.dll modules) if ever possible.

The problem that happens here is that if you like to use the functionality of some .Net framework (expected to be used for regular executables), this framework may contain some dependent assemblies that do not correspond to the information stored in the assemblies that use them. (For example, different assemblies may reference different versions of log4net assembly, but the framework will contain only one log4net assembly with the highest version number.)

This situation is handled fine with the mentioned .manifest file for the regular .Net executable, but when this happens for separate method call from some assembly, .Net runtime fails to find dependent assembly and CLR Bridge call fails.

 

The request is to enhance existing CLR Bridge functionality to make it possible to use assembly with the higher version (and/or another culture) if it exists and required initial dependent assembly cannot be found.