2016-08-16 4 views
0

Я хотел бы определить целевую версию инфраструктуры сборки .net (dll или exe). Как это сделать, если сборка .net имеет целевую структуру < .net 4.0? Было бы неплохо, если бы было решение, где мне не нужно было использовать внешние инструменты. Я бы предпочел решение, основанное на Microsoft VS/PowerShell или Windows. Я был бы так счастлив, если бы вы помогли мне с этим. Потому что сейчас я знаю только, как получить версию целевой среды, если сборка имеет целевую версию> = .net 4.0. (В данном случае я просто смотрю в манифест сборки и посмотреть на TargetFrameworkAttribute)Получить целевую структуру сборки .net, которая имеет целевую структуру <.net 4.0

большое спасибо

PhilOverflow

+0

Ассембли не нацелены на версию фреймворка, они нацелены на версию * runtime *. Это будет 2.0.50727, а [TargetFrameworkAttribute] будет отсутствовать. Совсем не очевидно, из вашего вопроса, почему это важно, но недостающего атрибута, возможно, достаточно. Или [используйте это] (https://msdn.microsoft.com/en-us/library/ms230176 (v = vs.110) .aspx). –

+0

<4.0 означает, что он не поддерживает функцию версии целевой структуры. Вы должны просто принять этот факт. –

ответ

0

Я использовал Assembly.ReflectionOnlyLoadFrom загрузить сборку, а затем осмотрел возвращенного ImageRuntimeVersion Ассамблеи , как:

var assembly = Assembly.ReflectionOnlyLoadFrom(ada.FileName); 
    string name = assembly.GetName(); 
    string clrVersion = assembly.ImageRuntimeVersion; 

Я успешно обнаружил .NET 2 и .NET 4 сборки из .NET 4 исполняемого файла, используя эту технику, но не уверен, что он будет работать с .NET 2 исполняемой в DETEC t сборки .NET 4.

+0

Это хорошая идея, чтобы определить версию исполнения. Для меня важнее знать версию рамочной сборки вместо версии времени исполнения. Но я благодарю вас за то, что вы хотите помочь. – PhilOverflow