[#]Come risalire alla versione di visual studio utlilizzata per un pro...

domenica 26 ottobre 2008 - 14.56

program Profilo | Junior Member

Ciao ho un eseguibile di un programmino creato in c#.
Come posso fare per risalire alla versione di visual studio utilizzata per la creazione?
Grazie.

freeteo Profilo | Guru

ciao,
non so se intendessi la versione "del framework" più che la versione di "visual studio" utilizzata per farlo, perchè se è un compilato potrebbe essere anche stato creato con qualche altro tool ad esempio con la Express, o con SharpDevelop o con Eclipse addirittura.
A quanto ne so io, non è possibile saperlo in nessun compilato, proprio perchè il compilato è in linguaggio macchina (in .net in realtà è IL) e ci sono tanti tool di sviluppo che possono generare lo stesso output.

Per sapere la versione del framework,io ho sempre aperto il file con Reflector (http://www.red-gate.com/products/reflector/), e visto la versione del file "mscorlib" che l'exe/dll referenziava.
Questa libreria infatti è quella che contiene i tipi base del framework, e quindi è della versione del framework a cui fa riferimento l'exe stesso.

Non so se ci siano altri metodi ufficiali, io mi sono sempre arrangiato così
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

aiedail92 Profilo | Expert

Ciao

Se vuoi ottenere la versione programmaticamente puoi usare questo codice:

//Il percorso del file eseguibile string file = @"C:\percorso.exe"; //Carica il modulo Assembly module = Assembly.LoadFile(file); //Ottiene la versione di CLR (.Net Framework) string version = module.ImageRuntimeVersion;

Luca

program Profilo | Junior Member

Assembly Reference mscorlib


Version: 2.0.0.0
Name: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Questo vorrebbe dire che è stato creato con .Net 2.0?

program Profilo | Junior Member

>Ciao
>
>Se vuoi ottenere la versione programmaticamente puoi usare questo
>codice:
>
>//Il percorso del file eseguibile
>string file = @"C:\percorso.exe";
>//Carica il modulo
>Assembly module = Assembly.LoadFile(file);
>//Ottiene la versione di CLR (.Net Framework)
>string version = module.ImageRuntimeVersion;
>
>Luca

Mi dice che
Il tipo o il nome dello spazio dei nomi 'Assembly' non esiste nello spazio dei nomi 'System'; probabilmente manca un riferimento a un assembly

Che devo aggiungere?
Grazie.

freeteo Profilo | Guru

>Version: 2.0.0.0
>Name: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
>Questo vorrebbe dire che è stato creato con .Net 2.0?
si, quel file è stato creato con il framework 2.0


>Il tipo o il nome dello spazio dei nomi 'Assembly' non esiste
>nello spazio dei nomi 'System'; probabilmente manca un riferimento
>a un assembly
che linguaggio usi?
C# => ti manca di aggiungere sopra alla classe "using System.Reflection;"
VB => è simile, solo che si dichiara tramite "Imports" , qundi diventa "Imports System.Reflection"

In entrambi i casi cmq, usando visual studio, ti basta posizionare il cursore sopra alla parola "Assembly" e ti compare un trattino in basso a destra della parola (smart tag) con il mouse (oppure con tasto Destro->Refactor->...) gli puoi aggiungere il richiamo all'utilizzo di quel namespace.
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

program Profilo | Junior Member

Ok grazie a tutti.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5