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 и Рик объяснил это очень хорошо.