Diese Frage bezieht sich weniger auf die Programmierung als vielmehr auf die Bereitstellung.
Ich unterhalte mich viel mit der Gruppe in meinem Unternehmen, deren Aufgabe es ist, unsere Windows-Produktionsserver zu warten und unseren Code darauf bereitzustellen. Aus rechtlichen und Compliance-Gründen habe ich keine direkte Sichtbarkeit oder Kontrolle über die Server. Daher kann ich nur anhand der Anweisungen, die ich dieser Gruppe gebe, feststellen, welche Version (en) von .NET auf einer dieser Server installiert sind.
Bisher können ich mir alle Methoden vorstellen, um festzustellen, welche Versionen installiert sind (überprüfen Sie, ob die Verwaltung mit 1.1 oder 2.0 übereinstimmt, überprüfen Sie die Einträge in der Liste "Programme hinzufügen / entfernen", und überprüfen Sie, ob die vorhanden sind Verzeichnisse unter c: \ Windows \ Microsoft.NET) sind fehlerhaft (ich habe mindestens einen Computer mit 2.0, aber keinen 2.0-Einträgen unter Verwaltung gesehen - und diese Methode sagt nichts über 3.0+ aus, die Liste "Software" kann nicht mehr mit der Realität synchron sein, und die Existenz der Verzeichnisse bedeutet nicht unbedingt etwas).
Angesichts der Tatsache, dass ich im Allgemeinen wissen muss, dass diese Dinge im Voraus vorhanden sind (wenn ich feststelle, dass "Hoppla, diese Version verfügt nicht über alle Versionen und Service Packs, die Sie benötigen", funktioniert dies bei kurzen Wartungsfenstern nicht wirklich gut), muss ich dies tun Führen Sie die Überprüfung "per Proxy" durch, da ich nicht direkt auf die Server zugreifen kann. Wie kann ich auf kinderleichte Weise feststellen, welche .NET-Version (en) auf einem Windows-Produktionsserver installiert sind? Vorzugsweise eine intrinsische Methode, um das zu verwenden, was das Framework installiert, da es schneller ist und kein Dienstprogramm zum Laden benötigt, und auch eine Methode, die definitiv fehlschlägt, wenn die Frameworks nicht ordnungsgemäß installiert sind, aber noch Dateien vorhanden sind (z gibt es ein Verzeichnis und gacutil.exe ist dort indiziert, aber diese Version des Frameworks ist nicht wirklich "installiert")
BEARBEITEN: Kennt jemand ein gutes, leichtes Programm ohne Installation, das dies herausfinden kann, da es keine gute narrensichere Methode gibt, um dies in die Frameworks zu integrieren? Ich kann mir vorstellen, dass jemand leicht einen schreiben könnte, aber wenn einer bereits existiert, wäre das noch besser.