Как я могу использовать IFormFile в .Net 8.0 без устаревших пакетов

Я только что обновил все проекты в своем решении с .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.

Можете ли вы добавить минимально воспроизводимый пример ? IFormFile является частью ASP.NET Core, и добавления FrameworkReference должно быть достаточно. Попробуйте собрать через командную строку (т. е. dotnet build из папки проекта).

Guru Stron 14.08.2024 22:05

Почему бы вам не добавить пакет, упомянутый в предоставленной вами ссылке? nuget.org/packages/Microsoft.AspNetCore.App.Ref

Siavash Mortazavi 14.08.2024 23:30

Они являются частью платформы .Net8 после версии 2.2.2. Таким образом, независимый пакет устарел. Как удалить эти пакеты в .net6? Обновляется ли этот проект с более старой версии?

Qiang Fu 15.08.2024 03:47

Какой параметр Sdk установлен в вашем файле проекта? В наших проектах он установлен на Microsoft.NET.Sdk.Web, и мы не используем ссылку на структуру вручную.

Damien_The_Unbeliever 15.08.2024 08:33

Пересмотрел это сегодня, и это сработало! Единственное, о чем я могу думать, это то, что я случайно удалил использование или что-то в этом роде. Понятия не имею, но сегодня утром все работало! Спасибо за весь вклад.

RHarris 15.08.2024 18:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня была та же проблема, и я нашел следующее описание в документации:

С выпуском .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 и не должно быть абсолютно одинаковым с пакетом или без него.
Guru Stron 15.08.2024 09:11

@GuruStron: Я случайно назвал свой проект IFormFile. Я знаю, что это плохая идея...

Jackdaw 15.08.2024 09:13

Это совершенно другая проблема, и ее нельзя решить путем добавления устаревших пакетов, поскольку пакет OP исправлен.

Guru Stron 15.08.2024 09:15

@GuruStron: Спасибо, я удалил из ответа несвязанную часть. И нет необходимости использовать устаревшие пакеты, если фреймворк уже содержит необходимое определение интерфейса.

Jackdaw 15.08.2024 09:25

И не надо использовать устаревшие пакеты" - да, я знаю. Но дело в том, что добавление их к уже имеющемуся решению FrameworkReference решает проблему ОП.

Guru Stron 15.08.2024 09:37

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

RHarris 15.08.2024 18:10

@RHarris: О, понятно. В таких случаях я пытаюсь обновить Visual Studio, удалить bin/obj, а затем перестроить решение. Иногда в неординарных случаях это помогает.

Jackdaw 15.08.2024 18:26

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