2010-09-01 2 views
1

Я пишу базу кода на C# и имел проблемы с тем, что на тестовом компьютере не был установлен правильный пакет обновления .NET 3.5 для запуска кода (такая же проблема как здесь: Exception is occuring only on my machine: Method not found: WaitHandle.WaitOne(Int32)). Мне интересно, есть ли инструменты для анализа статического кода, которые я могу выполнить через свой код, который скажет мне минимальную версию .NET, необходимую для каждого из отдельных модулей (или сборки).Проверка того, какая версия .NET требуется для запуска моего кода

Спасибо.

ответ

3

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

+1

Это больше о проверке, какая версия часть с ode требует в отношении пакетов обновлений, на которые нельзя ориентироваться, но, тем не менее, они не статически проверяются на совместимость во время компиляции, а скорее не выполняются во время выполнения с помощью MissingMethodException ... – Pete

2

Я не знаю ни одного статического анализа, но вот что я нашел, на основе 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 Client Profile "- .NET 3.5 SP1 (клиент)
  • VS 2010« Профиль клиента .NET Framework 3.5 »- .NET 3.5 SP1 (клиент)
  • VS 2010« .NET Framework 4.0 »- RTF .NET 4.0
  • VS 2010 «Профиль клиента .NET Framework 4.0» - RTM (клиент) .NET 4.0

Примечания:

  • VS 2008 поставляется с .NET 3.5 RTM; VS 2008 SP1 поставляется с .NET 3.5 SP1; VS 2010 поставляется с RTM .NET 4.0.
  • VS 2010 не может настроить таргетинг на более ранние версии, если они не установлены отдельно.
  • профиль клиента был введен в .NET 3.5 SP1
  • VS 2010 является первой версией с расширяемой multitargeting (так - в теории - это будет в состоянии предназначаться БУДУЩЕЕ версии .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 SP1 имеет некоторые странные правила относительно «.NET Framework 3.5» (попытка нацеливания на пакет обновления 1 (SP1), только если он используется), но VS2010 просто поддерживает таргетинг .NET 3.5 SP1.

Источники:

Смежные вопросы