So I have an app (tool) that uses .NET 3.0. When run on a machine that only has .NET 2.0 (like the default Server 2008 R2 install) it crashes miserably.
What I’ve seen so far is that people are using a shunt that will first check the .NET version.
Is there a way to build it or add some manifest somehow so that the user is warned of this problem (and hopefully be prompted to install .NET)?
I know this can be solved by an installer, but I have requirements that need it to be a standalone executable. (Ok this is hard to explain, but it’s related to the a device driver. The tool comes with the driver, but the user shouldn’t be forced to install .NET 3.0 if they won’t use the tool.)
I just need to stop at the point where a cryptic “application has failed with exception 0xe0434f4d” message and at the very least give the user some idea of what happened.
Have not tested this, but this article about framework detection tells how you could detect the framework version from code. I’m not sure where your application fails and if injecting checks like this could solve your problem, but if you cannot use this in your app, you could perhaps create a small “starter app” in old .net 2.0 that performs these checks and then either tells the user to upgrade or starts your “real” app?
As I said, haven’t tested this approach, it’s just off the top of my mind.