Я только что обновил все проекты в своем решении с .Net6 до .Net8.
Во всех проектах решения я удалил пакеты Microsoft.AspNetCore.Http
и Microsoft.AspNetCore.Http.Features
. Затем в проектах, которым это требовалось, я добавил
<ItemGroup>
<FrameworkReference Include = "Microsoft.AspNetCore.App" />
</ItemGroup>
Однако у меня есть один проект, который имеет ссылку на IFormFile
и который не будет собран, пока я повторно не добавлю пакеты Microsoft.AspNetCore.Http
и Microsoft.AspNetCore.Http.Features
. Оба эти пакета устарели, поэтому я пытаюсь устранить необходимость в них.
Разве IFormFile не существует в .Net 8 - судя по этому кажется, что он является частью .Net 8? Если нет, то какова альтернатива .Net 8?
P.S. Рассматриваемый проект имеет указанную выше ссылку FrameworkReference.
Почему бы вам не добавить пакет, упомянутый в предоставленной вами ссылке? nuget.org/packages/Microsoft.AspNetCore.App.Ref
Они являются частью платформы .Net8 после версии 2.2.2. Таким образом, независимый пакет устарел. Как удалить эти пакеты в .net6? Обновляется ли этот проект с более старой версии?
Какой параметр Sdk
установлен в вашем файле проекта? В наших проектах он установлен на Microsoft.NET.Sdk.Web
, и мы не используем ссылку на структуру вручную.
Пересмотрел это сегодня, и это сработало! Единственное, о чем я могу думать, это то, что я случайно удалил использование или что-то в этом роде. Понятия не имею, но сегодня утром все работало! Спасибо за весь вклад.
У меня была та же проблема, и я нашел следующее описание в документации:
С выпуском .NET Core 3.0 многие сборки ASP.NET Core больше не поддерживаются. больше не публикуются в NuGet в виде пакетов. Вместо этого сборки включены в общую структуру
Microsoft.AspNetCore.App
, которая устанавливается с помощью .NET Core SDK и установщиков среды выполнения
Итак, объявление интерфейса IFormFile
уже включено в платформу. Использование обычного объявления должно работать:
public IActionResult Loading(IFormFile file)
Скриншот с версией SDK, используемой в моем проекте:
IFormFile
остается в том же пространстве имен, что и начиная с .NET Core 1. Добавление полного имени/псевдонима должно быть эквивалентно добавлению using
и не должно быть абсолютно одинаковым с пакетом или без него.
@GuruStron: Я случайно назвал свой проект IFormFile. Я знаю, что это плохая идея...
Это совершенно другая проблема, и ее нельзя решить путем добавления устаревших пакетов, поскольку пакет OP исправлен.
@GuruStron: Спасибо, я удалил из ответа несвязанную часть. И нет необходимости использовать устаревшие пакеты, если фреймворк уже содержит необходимое определение интерфейса.
И не надо использовать устаревшие пакеты" - да, я знаю. Но дело в том, что добавление их к уже имеющемуся решению FrameworkReference
решает проблему ОП.
Вы можете увидеть мою заметку выше, но сегодня это сработало. То, что вы описали, это именно то, что я пробовал вчера, сегодня это сработало.
@RHarris: О, понятно. В таких случаях я пытаюсь обновить Visual Studio, удалить bin/obj, а затем перестроить решение. Иногда в неординарных случаях это помогает.
Можете ли вы добавить минимально воспроизводимый пример ?
IFormFile
является частью ASP.NET Core, и добавленияFrameworkReference
должно быть достаточно. Попробуйте собрать через командную строку (т. е.dotnet build
из папки проекта).