Как заставить VisualStudio выполнить проверку совместимости с пакетом обновления .Net?

После выпуска пакета обновления .Net некоторые новые классы могут быть дополнены новыми методами.

Одним из таких методов является метод WaitHandle.WaitOne(int timeout), существующий только с версии .Net 2.0 SP2.

Когда разработчики пишут код, они иногда не переделывают MSDN (особенно для чего-то, что они достаточно знают), или недостаточно внимательно изучают его, а просто используют intellisense для выбора метода из раскрывающегося списка (потому что у них есть .Net 2.0 sp2). установлены).

Затем программа может вызвать исключение MethodMissingException на компьютерах с Framework 2.0 без пакета обновления 2 (SP2). Знание о такой несовместимости заранее может помочь избежать этой проблемы.

Можно ли каким-то образом заставить Visual Studio (2010) проверить уровень совместимости пакета обновления Framwork? Может какие плагины есть? Я надеялся, что Resharper может это сделать, но, похоже, не может.

EDIT: Я хочу, чтобы код был совместим с .Net SP1, тогда компилятор или плагин предупредят разработчика, если он попытается использовать метод или класс, который существует только в SP2.

Спасибо


person mistika    schedule 18.05.2012    source источник
comment
что вы подразумеваете под: проверить уровень совместимости пакета обновления Framwork?   -  person w0051977    schedule 18.05.2012
comment
Я имею в виду, что если код должен быть совместим с .Net SP1, то компилятор или плагин предупредят разработчика, если он попытается использовать метод или класс, который существует только в SP2.   -  person mistika    schedule 19.05.2012
comment
Это была ошибка. Нет никакого способа защитить себя от этого. .NET 4 имеет специальные контрмеры, чтобы предотвратить это в будущем, эталонные сборки больше не являются копиями сборок среды выполнения.   -  person Hans Passant    schedule 19.05.2012


Ответы (2)


Когда вы компилируете приложение .net для конкретной версии фреймворка, приложение вообще не будет работать в более старой версии.

Если вы попытаетесь скомпилировать приложение .NET на машине с более старой/новой версией фреймворка, в которой отсутствуют методы, компилятор обнаружит такие ошибки.

Не могли бы вы объяснить, чего вы пытаетесь достичь?

person Victor Hurdugaci    schedule 18.05.2012
comment
Я пытаюсь, чтобы разработчики проверяли, совместим ли код с .Net-2.0-без-Service-Pack, прежде чем выполнять проверку кода. - person mistika; 19.05.2012

Если вы пометите функцию устаревшим тегом (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx), то вы можете поместить предупреждающее сообщение для разработчика, например. «Используйте функцию a вместо функции b».

Взгляните на этот вопрос, который я задал: ASP.NET и ошибка IIS7 Winsock. Я не смог использовать «GetHostByAddress», потому что он устарел.

person w0051977    schedule 18.05.2012