[C#] Check .NET versie (voor .NET 3.5)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
ik probeer via c# code erachter te komen of mensen het .NET 3.5 framework hebben geinstalleerd.
Helaas is dit volgens mij bijna onmogelijk? Ik heb hetzelf geinstalleerd maar als ik via wat code de .NET versie opvraag krijg ik nog steeds maar te zien: .NET 2.0

ook bv via dit programma:
http://www.tmgdevelopment.co.uk/versioncheck.htm

krijg ik maar te zien:
Installed .NET Runtime(s)
OK.
Current version: The following runtimes are installed:
1.1.4322.2407 Version 1.1 Post-SP1 with KB928366 Apr 2007
2.0.50727.1433
3.0.4506.648
Iemand een idee om het echt goed te checken? Op internet of via msdn krijg ik het niet voor elkaar...

Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 10-09 11:15
Is het niet zo dat .NET 3.5 just ook draait op de 2.0 runtime (SP1 dan)?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:07

TeeDee

CQB 241

Afaik kan je het e.e.a. benaderen via WMI.

ManagementObjectSearch, SelectQuery, Win32_Products zijn wat keywords

[ Voor 51% gewijzigd door TeeDee op 16-04-2008 14:34 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

.NET 3.0 / 3.5 is een uitbreiding op .NET 2.0.

Het programma dat je gebruikt van tmgdevelopment meld duidelijk dat het tot versie .NET 3.0 support.
Dus het is vrij logisch dat je dan geen .NET 3.5 te zien krijgt.

Wat wil je er mee bereiken?

Browsers sturen meestal header informatie mee:

code:
1
User-Agent  Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)


Maar als iemand bv niet de vereisde versie heeft van het .NET framework (of helemaal geen .NET framework) dan zal het vrij lastig worden je zelf geschreven C# programma uit te voeren om te checken welke .NET versie geïnstalleerd zijn ;).

Voor informatie hoe je .NET frameworks kan vinden: How to determine which versions of the .NET Framework are installed and whether service packs have been applied

Als je een applicatie maakt met een msi installer, kun je de msi laten controleren op .NET versies.

Waarom wil je de .NET versies weten? ;)

edit: o, ik zie dat je alleen wilt weten of .NET 3.5 geïnstalleerd is, maar bovenstaande vraag blijft bestaan.

[ Voor 4% gewijzigd door Verwijderd op 16-04-2008 14:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik kan via installer laten checken op .NET versies, maar niet op 3.5...
wou zelf simpel iets (met beetje design) maken in .NET 1.1, wat wel draait overal volgens mij

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:07

TeeDee

CQB 241

Afaik kan je 'simpel' met versie X niet checken op hogere versies, daar deze er officieel geen weet van hebben. Ik wilde in eerste instantie (naast WMI) ook een oplossing geven zoals in de MSDN link van Phoeba staat.
wou zelf simpel iets (met beetje design) maken in .NET 1.1, wat wel draait overal volgens mij
En dan wil je checken op 3.5 omdat...?

[ Voor 26% gewijzigd door TeeDee op 16-04-2008 15:36 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

100% zeker kun je daar niet van uit gaan.
.NET 2.0 (met daarbij 3.5) staat bv helemaal los van .NET 1.1.
Het zou dus goed mogelijk zijn dat de gebruiker geen .NET 1.1 heeft maar wel .NET 3.5.

Installer niet laten checken op .NET 3.5? lijkt mij sterk, ik ga even uitzoeken :).
Welke Visual Studio versie gebruik je?

Acties:
  • 0 Henk 'm!

Verwijderd

Eigenschappen van je Setup Project > Configuration Properties > Build > Prerequisites, daar kun je vanalles aanvinken. waaronder .NET Framework 3.5.

Werkt denk ik alleen in VS2008.

Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Je kunt dit wel checken:
doe achtereenvolgens:
- een assembly load van System.Core. Indien dit laadt: -> .NET 3.5 geinstalleerd.
- een assembly load van PresentationCore. Indien dit laadt: -> .NET 3.0 geinstalleerd
.NET 2.0 is te checken middels de MSCorlib classes, dus een assembly type check op een system type.

Je kunt ook folders op disk checken:
c:\windows\Microsoft.NET\Framework\*

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:13
Verwijderd schreef op woensdag 16 april 2008 @ 15:33:
ik kan via installer laten checken op .NET versies, maar niet op 3.5...
Onzin. Als je je installer maakt met VS 2008 kan je gewoon 3.5 als prerequisite aangeven.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Ja of checken in registery ;)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\Version

Maar nog steeds zie ik het probleem van zijn eigen C# programma, dat draait niet zonder .NET.
Dan zal de TS toch echt met een MSI moeten werken.

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
EfBe schreef op woensdag 16 april 2008 @ 15:43:
Je kunt dit wel checken:
doe achtereenvolgens:
- een assembly load van System.Core. Indien dit laadt: -> .NET 3.5 geinstalleerd.
- een assembly load van PresentationCore. Indien dit laadt: -> .NET 3.0 geinstalleerd
.NET 2.0 is te checken middels de MSCorlib classes, dus een assembly type check op een system type.

Je kunt ook folders op disk checken:
c:\windows\Microsoft.NET\Framework\*
Check dan ook ff de version van de DLL, dan ben je ook forward compatible ;)

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • Gerrit88
  • Registratie: Maart 2007
  • Laatst online: 16-09 15:16
Dit oude topic beschrijft precies het probleem waar ik ook tegenaan loop. Is er inmiddels al iemand die het probleem opgelost heeft en een methode gevonden om te controleren of .NET 3.5 geïnstalleerd is?

In dit topic wordt aangegeven dat de applicatie niet zelf zal kunnen checken of de versie hoog genoeg is omdat de applicatie niet start als de versie te laag is. Dit is dus niet zo. Mijn applicatie start in een 2.0 omgeving. Deze applicatie verzorgd de verbindingen met de server, het downloaden installeren van updates en serveert daarna een loginscherm. Pas na het inloggen is 3.5 nodig. Voor het inlogscherm verschijnt wil ik weten welk framework beschikbaar is. Eventueel kan ik dan een base version uitbrengen die gebaseerd is 2.0. Uiteraard is deze versie dan uitgekleed ten opzichte van de volledige versie maar in ieder geval beter dan niets.

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 16-09 12:57
Ik raad je gewoon aan op functies te controleren en niet op versies. Versie controleren is zowat het slechtste dat er bestaat qua controle.

Ik heb enkele maanden geleden een erg interessante blog gelezen, maar weet de link niet meer.

EDIT

De blog kan je hier (The Windows Blog) vinden.

[ Voor 27% gewijzigd door Styxxy op 22-12-2009 13:20 ]


Acties:
  • 0 Henk 'm!

  • Gerrit88
  • Registratie: Maart 2007
  • Laatst online: 16-09 15:16
Styxxy, bedankt voor je reactie en tip. De blog waar je naar verwijst zal ik binnenkort lezen, helaas momenteel niet erg veel tijd voor.

Ik heb op dit moment nog niet helemaal helder hoe ik me 'op functies controleren' voor moet stellen. Middels try-catch het bestand van functies nagaan?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Gerrit88 schreef op dinsdag 22 december 2009 @ 12:54:
Dit oude topic beschrijft precies het probleem waar ik ook tegenaan loop. Is er inmiddels al iemand die het probleem opgelost heeft en een methode gevonden om te controleren of .NET 3.5 geïnstalleerd is?

In dit topic wordt aangegeven dat de applicatie niet zelf zal kunnen checken of de versie hoog genoeg is omdat de applicatie niet start als de versie te laag is. Dit is dus niet zo. Mijn applicatie start in een 2.0 omgeving. Deze applicatie verzorgd de verbindingen met de server, het downloaden installeren van updates en serveert daarna een loginscherm. Pas na het inloggen is 3.5 nodig. Voor het inlogscherm verschijnt wil ik weten welk framework beschikbaar is. Eventueel kan ik dan een base version uitbrengen die gebaseerd is 2.0. Uiteraard is deze versie dan uitgekleed ten opzichte van de volledige versie maar in ieder geval beter dan niets.
EfBe in "\[C#] Check .NET versie (voor .NET 3.5)" geeft anders toch een aardige oplossing.

Het is heel simpel, .NET 3.5 draait gewoon op de 2.0 runtime, alleen met extra assemblies erbij. Dus je kunt op die assemblies checken voordat je ze gaat gebruiken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 16-09 12:57
Gerrit88 schreef op dinsdag 22 december 2009 @ 13:32:
Styxxy, bedankt voor je reactie en tip. De blog waar je naar verwijst zal ik binnenkort lezen, helaas momenteel niet erg veel tijd voor.

Ik heb op dit moment nog niet helemaal helder hoe ik me 'op functies controleren' voor moet stellen. Middels try-catch het bestand van functies nagaan?
Goh, je moet best na gaan welke functionaliteit jij gebruikt dat in .NET 3.5 zit en niet in de vroegere versies. Op die manier kan je snel checken of alle functionaliteiten die jij nodig hebt, er zijn. Zo niet, geef error; indien wel, kan je verder gaan. Stel nu dat je geen speciale functionaliteit van .NET 3.5 gebruikt, kan een vroegere versie misschien toch wel je programma mooi gebruiken...

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Daarnaast kan je bepaalde dingen best nabootsen. Je zal een complete WPF interface niet nabootsen, maar als je een paar simpele LINQ queries gebruikt kan je je beter bedenken of je geen foreach loop kan gebruiken met een paar if constructies erin. Dit is vaak nog sneller ook (LINQ is helaas niet zo snel).

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dat vind ik wel een flinke claim, de meeste LINQ extension methods zijn gewoon exact geimplementeerd zoals je dat zelf in een loopje zou doen.

Natuurlijk moet je wel de juiste methodes gebruiken, en niet allerlei omwegen zoeken, omdat je het maar in LINQ wil doen. Maar zeggen dat LINQ an sich langzaam is IMHO een beetje vreemd.

Een van de beperkingen die je natuurlijk wel hebt, is dat bijna alles op IEnumerable nivo geimplementeerd is, en er dus geen gebruik word gemaakt van specifieke collection implementaties ( Al word er volgens mij ook vaak getest op bijvoorbeeld de ICollection interface )

[ Voor 21% gewijzigd door Woy op 22-12-2009 14:23 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1