views:

140

answers:

3

How far along does software compiled for .NET 3.5 get before crashing on a system that only has .NET 2.0 installed?

The application I am developing uses WPF and requires .NET 3.5, but I would like to display a user-friendly dialog (rather than crashing) if the user does not have it installed.

Are there any standard ways to do this, or official Microsoft documentation on it?

+6  A: 

It (probably) wont crash until it tries to use a dll that needs 3.5. If the executing app can check the version before using any 3.5 specific dlls, you can display a winform dialog and you should be ok. Your safest bet would be to make the exe be a 2.0 assembly and make all of your 3.5 stuff in a separate dll that is compiled against 3.5. You could do your check in the 2.0 dll before it loads any of your 3.5 assemblies.

NotDan
+3  A: 

.NET 3.5 uses .NET 2.0 runtime, so an app will start perfectly fine (however, it will fail when it will attempt to load 3.5 assemblies). You can check Environment.Version to see if it's .NET 3.5 you're running on and present user with standard MessageBox.Show if not.

Anton Gogolev
Environment.Version only indicates the version of the CLR, not the .NET assemblies installed. The official way to check the version is via the registry: http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed
emddudley
+2  A: 

Have you considered using ClickOnce deployment? The agent will check for and install any prerequisite items you specify, including .Net. It also makes pushing upgrades of your application fairly painless.

Rob Allen
You can't rely on this - particularly in corporate environments where the users won't have admin access to the machine
ChrisF
If they lack the necessary rights to install, then any install method will fail.
Rob Allen
In my particular situation the application will be deployed to systems that do not have network access. I have not used ClickOnce before, but it does seem like a nice solution for most situations.
emddudley
@emddudley, You can include the install files on an Install CD. See here for how: http://msdn.microsoft.com/en-us/library/ms172610.aspx
Rob Allen
Note that ClickOnce requires .NET 3.0 or 3.5 to be installed to work. If the user only has .NET 2.0 installed the ClickOnce installer will not set it up for him, it will direct him to Microsoft's website.
emddudley
@emddudley - thats strange. I thought the whole point was that it would set up _any_ prereqs on click.
Rob Allen