Проверка, какая версия .NET требуется для запуска моего кода - PullRequest
1 голос
/ 01 сентября 2010

Я пишу кодовую базу на C #, и у меня были проблемы с тестовым ПК, на котором не установлен правильный пакет обновления .NET 3.5 для запуска кода (та же проблема, что и здесь: Исключение происходит только примоя машина: Метод не найден: WaitHandle.WaitOne (Int32) ).Мне интересно, есть ли инструменты статического анализа кода, которые я могу запустить в своем коде, которые сообщат мне минимальную версию .NET, требуемую для каждого из отдельных модулей (или сборки).

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 сентября 2010

Свойства проекта-> Приложение-> Целевая структура.

2 голосов
/ 01 сентября 2010

Я не знаю ни о каком инструменте статического анализа, но вот что я нашел, основываясь на документах MSDN и нескольких постах в блоге:

  • VS 2008 / VS 2008 SP1 + / VS 2010 ".NET Framework 2.0" - .NET 2.0 RTM
  • VS 2008 / VS 2008 SP1 + / VS 2010 ".NET Framework 3.0" - .NET 3.0 RTM
  • VS 2008 ".NET Framework 3.5" - .NET 3.5 RTM
  • VS 2008 SP1 + «.NET Framework 3.5» со ссылкой на System.Data.Entity.dll или с использованием ClickOnce - .NET 3.5 SP1
  • VS 2008 SP1 + ".NET Framework 3.5" без ссылки на System.Data.Entity.dll и без использования ClickOnce - .NET 3.5 RTM
  • VS 2010 ".NET Framework 3.5" - .NET 3.5 SP1
  • VS 2008 SP1 + «Профиль клиента .NET Framework» - .NET 3.5 SP1 (клиент)
  • VS 2010 ".NET Framework 3.5 Профиль клиента" - .NET 3.5 SP1 (клиент)
  • VS 2010 ".NET Framework 4.0" - .NET 4.0 RTM
  • VS 2010 ".NET Framework 4.0 Client Profile" - .NET 4.0 RTM (клиент)

Примечания:

  • VS 2008 поставляется с .NET 3.5 RTM; VS 2008 SP1 поставляется с .NET 3.5 SP1; VS 2010 поставляется с .NET 4.0 RTM.
  • VS 2010 не может ориентироваться на более ранние версии, если они не установлены отдельно.
  • Профиль клиента был представлен в .NET 3.5 SP1
  • VS 2010 является первой версией с расширяемым мультитаргетингом (поэтому - теоретически - она ​​сможет нацеливаться на будущие .NET версии без обновления VS).

Я считаю, что .NET 3.5 SP1 - это единственный пакет обновления, который добавил существенную функциональность, поэтому он единственный, который вызовет проблемы MissingMethodException. Например, это будет означать, что 3.0 RTM, 3.0 SP1 и 3.0 SP2 имеют один и тот же общедоступный API. Я не нашел явного подтверждения этому, но документация «что нового в .NET» охватывает только 2.0 / 3.5 / 3.5SP1 / 4.0, так что это логичное заключение.

VS 2008 с пакетом обновления 1 (SP1) имеет некоторые странные правила, касающиеся «.NET Framework 3.5» (попытки нацеливаться на SP1, только если он фактически используется), но VS2010 просто поддерживает таргетинг на .NET 3.5 SP1.

Источники:

...