Обход ада управления версиями.NET

Таким образом, иногда (часто!) Вы хотите быть нацеленными на определенную версию.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 только системы.

За исключением

  • при подтверждении каждой функции Вы используете, или
  • ограничение среды разработки к.NET 3.0 (который сосет, так как необходимо разработать для других проектов также),

чего лучший способ состоит в том, чтобы избежать против использования расширений?

Спасибо!

15
задан Joachim Sauer 11 March 2010 в 11:06
поделиться

5 ответов

Эта возможность встроена в Visual Studio, начиная с VS 2008 SP1, а также доступна в FxCop 1.36. Взгляните на запись блога Дэвида Кина для получения более подробной информации.

альтернативный текст http://davesbox.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blog/ErrorList_5F00_3.png

4
ответ дан 1 December 2019 в 04:46
поделиться

Microsoft склонна предполагать, что если у вас установлен .NET XXX, то у вас должен быть последний пакет обновлений, потому что Центр обновления Windows отправит вам их в качестве критических обновлений. Я знаю, что это хрупкое предположение, и иногда оно неверно, но это то, что должно было случиться.

Наши продукты в настоящее время нацелены на .NET 3.5 SP1, и поэтому мы были бы удивлены, обнаружив, что целевая среда все еще работает с .NET 3.5 RTM.

5
ответ дан 1 December 2019 в 04:46
поделиться

Перед отправкой выпуска скомпилируйте приложение с соответствующей версией Visual Studio, которая соответствует наименьшему общему знаменателю вашей целевой пользовательской базы.

Просто подготовьте виртуальную машину, на которой, скажем, Visual Studio 2005 нет SP, и скомпилируйте решение оттуда перед развертыванием.

1
ответ дан 1 December 2019 в 04:46
поделиться

Поможет ли это: Versioning Controlled Build?

0
ответ дан 1 December 2019 в 04:46
поделиться

Существует способ указать windows, какую версию .Net использовать. Это что-то вроде создания файла dllhost.exe.config IN windows\system32 с xmllike :

<? xml version = "1.0" ?>
<configuration>
<startup>
<SupportedRuntime version = XXXXXX>
</startup>
</configuration>

См: http://msdn.microsoft.com/en-us/library/w4atty68.aspx

2
ответ дан 1 December 2019 в 04:46
поделиться