[SIZE=2][COLOR=#0000ff][FONT=Courier New]using[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] System;[/FONT]
[/SIZE][SIZE=2][COLOR=#0000ff][FONT=Courier New]using[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] System.Collections.Generic;[/FONT]
[/SIZE][SIZE=2][COLOR=#0000ff][FONT=Courier New]using[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] System.Text;[/FONT]
[/SIZE][SIZE=2][COLOR=#0000ff][FONT=Courier New]using[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] System.Runtime.InteropServices;[/FONT]
[/SIZE][SIZE=2][COLOR=#0000ff][FONT=Courier New]using[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] System.Reflection;[/FONT][/SIZE]
[SIZE=2]
[/SIZE][SIZE=2][COLOR=#0000ff][FONT=Courier New]namespace[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] Sample[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] class [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Program
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] {[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT]
[FONT=Courier New] {[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Assembly[/COLOR][/SIZE][SIZE=2] yourAsm = [/SIZE][SIZE=2][COLOR=#008080]Assembly[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].ReflectionOnlyLoadFrom(args[0]);[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] AssemblyName[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] assemblies = yourAsm.GetReferencedAssemblies();[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] foreach[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#008080]AssemblyName[/COLOR][/SIZE][SIZE=2] refAsm [/SIZE][SIZE=2][COLOR=#0000ff]in[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] assemblies)[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] if[/COLOR][/SIZE][SIZE=2] (refAsm.Name == [/SIZE][SIZE=2][COLOR=#800000]"mscorlib"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][SIZE=2].WriteLine([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"Используемая версия Microsoft .NET: {0}"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New], refAsm.Version));[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].ReadKey();[/FONT]
[FONT=Courier New] }[/FONT]
[FONT=Courier New] }[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]
Как узнать, под какую версию .NET Framework скомпилирована прога?
Дело в том, что, например, если на компьютере установлена только .NET v2.0, то все проги, сделанные для v1.0, v1.1 и v2.0 будут выполняться в этой v2.0.
Как определить версию .NET, на которой ВЫПОЛНЯЕТСЯ программа -- знаю, а для которой СКОМПИЛИРОВАНА -- не знаю, и в сети ничего не нахожу, так как даже не предпологаю, в каком направлении копать, и по каким ключевым словам искать.
ИМХО, есть один вариант, загрузить сборку, посмотреть на "прикрученные" сборки из состава Famework, а точнее на их версии и тау узнать версию платформы, т.е. 1 или 2 :-) других вариантов в голову не пришло...
Вот тебе исходник. Первым параметром в программу передаёшь название твоей сборки, а прога возвращает в какой версии .NET она написана: