Necesito determinar mediante programación (c#) si una determinada versión de .NET Desktop Runtime está instalada en el sistema.
Una opción que encontré fue verificar la versión en el registro como sugiere esta publicación . Sin embargo, esto solo recuperará la última versión instalada. Las versiones de ASP.NET Core se pueden encontrar, por ejemplo, en el registro aquí: SOFTWARE\Microsoft\ASP.NET Core\Shared Framework
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; Solo recuperará la versión del marco en el que se ejecuta la aplicación.
La forma oficial parece ser usando el comando "dotnet --list-runtimes" (documentado por Microsoft aquí ). Esto requerirá que se inicie un proceso cmd desde la aplicación.
¿Existe otra forma posible de recuperar las versiones de .NET Desktop Runtime actualmente instaladas?
No es una excelente manera, pero puede verificar si existen carpetas de instalación de .NET en el sistema. Para .net runtime, la carpeta de instalación es:
C:\archivos de programa\dotnet\shared{tipo de tiempo de ejecución}{versión}\