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.