Downgrade.net 4.5 приложение к 4.0

Я хочу переустановить библиотеку .net из фреймворка версии 4.5 в .net 4.0.

У меня есть несколько libs, установленных с помощью nuget:

  • Microsoft.AspNet.WebApi.Client и его зависимости:
  • Newtonsoft.Json
  • System.Net.Http(Microsoft.Net 4 HTTP-клиентские библиотеки)

Я делаю следующее:

  • В настройках каждого проекта в моем решении я устанавливаю целевую структуру в 4.0. После этого я попытался восстановить свое решение, но, конечно, без успеха из-за ошибки The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?), то же самое для HTTP Client libs

  • Используя nuget ui manager, я удалил зависимости и попытался переустановить. Но есть ошибка Could not install package 'Microsoft.AspNet.WebApi.Client 5.1.1'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

Мой вопрос: могу ли я понизить этот проект, или я должен заменить эти библиотеки некоторыми, поддерживающими .net 4, и переписать некоторые части кода?

Ответ 1

.NET 4.5 является обновлением на месте для .NET 4.0, что означает, что CLR является одним и тем же, но добавлены новые библиотеки, а также исправления ошибок и улучшения производительности, и оба укажите .NET CLR 4.

В вашем случае, поскольку .NET 4.5 уже установлен, поэтому обновление 4.5 полностью заменяет среду выполнения .NET 4.0.

Даже если вы измените свой проект на .NET 4.0, библиотека, используемая внутри, по-прежнему указывает на 4.5, но ограничена теми, которые доступны для 4.0, но поведение может отличаться от того, что вы ожидать в чистом .NET 4.

Итак, чтобы понизить ваш проект с 4.5 до 4.0, я согласен с вами, вам нужно:

  • Переустановите свою платформу .NET только на .NET 4 (если вам больше не требуется .NET 4.5)
  • изменить проект, чтобы указать на .NET 4
  • переписать часть кода, которая не поддерживается .NET 4 (например, в вашем случае Microsoft.AspNet.WebApi.Client 5.1.1 поставляется с WebApi2 в    .NET 4.5, и вам нужно понизить его до использования способа, как .NET 4 )

Hanselman и Рик объяснил это очень хорошо.