Таким образом, иногда (часто!) Вы хотите быть нацеленными на определенную версию.NET (скажите 3.0), но затем из-за некоторых пакетов обновления.NET Вы входите в проблемы как:
Dispatcher.BeginInvoke(Delegate, Object[])
<-это было добавлено в 3,0 SP2 (3.0.30618)System.Threading.WaitHandle.WaitOne(Int32)
<-это было добавлено в 3,5 SP1, 3,0 SP2, 2,0 SP2Теперь, они обнаруживаются JIT-компилятором, таким образом создавание против.NET 3.0 в Visual Studio не гарантирует, что будет работать на.NET 3.0 только системы.
За исключением
чего лучший способ состоит в том, чтобы избежать против использования расширений?
Спасибо!
Эта возможность встроена в Visual Studio, начиная с VS 2008 SP1, а также доступна в FxCop 1.36. Взгляните на запись блога Дэвида Кина для получения более подробной информации.
Microsoft склонна предполагать, что если у вас установлен .NET XXX, то у вас должен быть последний пакет обновлений, потому что Центр обновления Windows отправит вам их в качестве критических обновлений. Я знаю, что это хрупкое предположение, и иногда оно неверно, но это то, что должно было случиться.
Наши продукты в настоящее время нацелены на .NET 3.5 SP1, и поэтому мы были бы удивлены, обнаружив, что целевая среда все еще работает с .NET 3.5 RTM.
Перед отправкой выпуска скомпилируйте приложение с соответствующей версией Visual Studio, которая соответствует наименьшему общему знаменателю вашей целевой пользовательской базы.
Просто подготовьте виртуальную машину, на которой, скажем, Visual Studio 2005 нет SP, и скомпилируйте решение оттуда перед развертыванием.
Существует способ указать windows, какую версию .Net использовать. Это что-то вроде создания файла dllhost.exe.config IN windows\system32 с xmllike :
<? xml version = "1.0" ?>
<configuration>
<startup>
<SupportedRuntime version = XXXXXX>
</startup>
</configuration>