Я не знаю ни одного статического анализа, но вот что я нашел, на основе 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.
Источники:
Это больше о проверке, какая версия часть с ode требует в отношении пакетов обновлений, на которые нельзя ориентироваться, но, тем не менее, они не статически проверяются на совместимость во время компиляции, а скорее не выполняются во время выполнения с помощью MissingMethodException ... – Pete