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.