.net - specification - common language runtime detectó un programa no válido
Obtenga la versión actual de.NET CLR en tiempo de ejecución? (3)
¿Cómo puedo obtener la versión actual de CLR Runtime en un programa .NET en ejecución?
Consulte la propiedad System.Environment.Version ( http://msdn.microsoft.com/en-us/library/system.environment.version.aspx ).
Desde .NET 4.5, realmente no se puede usar System.Environment.Version
(solo devolverá 4.0. {Something}), lo que le permite verificar que está "al menos" en 4.0 pero sin decirle qué versión real está disponible a menos que puede mapear una lista completa de números de compilación en).
En su lugar (como se menciona @ jim-w), debe verificar el registro en una tabla de búsqueda "simple". Es un poco ridículo y, al ser específico de Windows, no funciona para .NET Core ...
Sin embargo ... a partir de .NET 4.7.1, han retrocedido una clase de .NET Core al marco completo, y ahora puedes verificar System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription
Desafortunadamente, devuelve una cadena con: ".NET Core", ".NET Framework" o ".NET Native" antes del número de versión, por lo que todavía tiene que realizar algunos análisis.
Environment.Version //might want to call ToString()?