Configuring your V1.1 apps to run against V1.0
A friend of mine was trying to get his V1.1 app to run against V1.0 without much luck. His config file had a startup section that looked like this:
<startup>
<supportedRuntime version=”v1.1.4322”/>
<supportedRuntime version=”v1.0.3705”/>
</startup>
This will NOT work on V1.0!
In V1.0, the V1.0 shim has no support for <supportedRuntime> tags so actually does not know what they mean.
Now, here is where it gets unintuitive:
In V1.1, they started worrying about backwards/forwards compatibility and decided that perhaps the <requiredRuntime> tag was not the best thing to use and introduced the <supportedRuntime> tag.
The V1.1 shim actually checks for the <supportedRuntime> tag first, and if it finds it ignores the <requiredRuntime>.
So, in V1.1 even if you have something like:
<?xml version=”1.0”>
<configuration>
<startup>
<requiredRuntime version=”v1.0.3705”/>
<supportedRuntime version=”v1.1.4322”/>
<supportedRuntime version=”v1.0.3705”/>
</startup>
</configuration>
The V1.1 app will still run on V1.1 because the V1.1 shim reads the <supportedRuntime> tags first.
The V1.1 app WILL NOT run on V1.1 though, if you don’t include the <supportedRuntime> tags and only have the <requiredRuntime> tag.
<?xml version=”1.0”>
<configuration>
<startup>
<requiredRuntime version=”v1.0.3705”/>
</startup>
</configuration>
In this case, the V1.1 shim sees the <requiredRuntime> tag since there are no <supportedRuntime> tags.