Я не знаю ни о каком инструменте статического анализа, но вот что я нашел, основываясь на документах 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.
Источники: