Есть ли разница между созданием / запуском приложения для.Net 4 с установленным.Net 4 или.Net 4.5?

Название довольно ясно. Есть ли какая-либо разница в создании / запуске приложения для.Net 4, если вы установили только.Net 4 Framework или.Net 4.5 Framework?

Мой коллега сказал, что даже если приложение предназначено для.Net 4, установка 4.5 имеет значение, и я не уверен.

Благодарю.

3 ответа

Решение

NET 4.5 - это "обновление на месте".NET 4, поэтому даже если вы ориентируетесь на.Net 4, вы будете использовать.NET 4.5, см. http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx.

Подводя итог этому блогу, можно выделить три основные версии.NET, которые можно установить рядом:

  • .NET 1 (1.1)
  • .NET 2 (2/3 / 3,5)
  • .NET 4 (4 / 4.5)

"Незначительные" версии находятся на месте апгрейдов

Да, вот пример:

Следующее консольное приложение должно выдать UnobservedTaskException в системе без установленного.Net 4.5 или более поздней версии, но он будет работать постоянно, если установлен.Net 4.5 или более поздней версии:

private static void Main()
{
    Task.Factory.StartNew(() => { throw new InvalidOperationException("Erk"); });

    while (true)
    {
        Thread.Sleep(100);
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
}

Вы должны иметь возможность настроить это поведение вApp.Config по словам Microsoft, но это не работает для меня вообще.

У меня были серьезные проблемы с HgLab (локальным приложением ASP.NET), ориентированным на.NET 4.0 и созданным на сервере с установленным.NET 4.5.

Я не использую ничего необычного, только стабильные публичные API и явно нацелены на.NET 4.0. Тем не менее он продолжал падать глубоко внутри kernelbase.dll на 64-битных системах генерирует нешифруемые аварийные дампы и ведет себя очень странно.

В итоге я включил поддержку 32-битных приложений в 64-битной версии IIS - похоже, это решило проблему. Но, как правило, если вы хотите нацелиться на.NET 4.0, делайте сборку на сервере сборки, на котором установлен только.NET 4.0.

Другие вопросы по тегам