Ошибка CS0234: имя типа или пространства имен "AspNetCore" не существует в темпе имен "Microsoft" (отсутствует ссылка на сборку?)

Я пытаюсь обновить следующий шаблон проекта до ASP.NET Core 1.1: https://github.com/wilanbigay/aspnet-core-aurelia-typescript-starter

После запуска переноса dotnet файл project.json был удален в пользу нового файла csproj.

Используя код Visual Studio и расширение Nuget4Code, я обновил все компоненты до ASP.NET Core 1.1.

CsProj теперь содержит такие записи:

<ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk">
      <Version>1.0.0-alpha-20161104-2</Version>
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Sdk.Web">
      <Version>1.0.0-alpha-20161104-2</Version>
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.NETCore.App">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore.Mvc">
      <Version>1.1.0</Version>
    </PackageReference>

Однако у меня есть проблемы с компиляцией. Кажется, пространство имен AspNetCore не может быть найдено. Я получаю ошибку

Ошибка CS0234: имя типа или пространства имен "AspNetCore" не существует в темпе имен "Microsoft" (отсутствует ссылка на сборку?)

Я не уверен, как я могу проверить ссылки, как я это делал в Visual Studio в разделе ссылок. Как я могу решить это?

16 ответов

Решение

Так что я думаю, что я ссылался на зависимости, но не установил их для проекта.

Все, что мне нужно было сделать, это запустить dotnet restore

https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-restore

Как указано в ссылке выше, это "Восстанавливает зависимости и инструменты проекта".

У нас только что была эта проблема, когда Visual Studio услужливо добавила местную ссылку, а не через Nuget

<ItemGroup>
  <Reference Include="Microsoft.AspNetCore.Mvc.Core">
    <HintPath>C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.core\2.0.0\lib\netstandard2.0\Microsoft.AspNetCore.Mvc.Core.dll</HintPath>
  </Reference>
</ItemGroup>

Удаление этого и ссылка через Nuget решили проблему, похоже на проблему в Visual Studio 2017.

Мой был просто, что я не ссылался Microsoft.AspNetCore.App в файле.csproj.

Я добавил ссылку, и это сработало:

MyTestProject.csproj

<Project Sdk="Microsoft.NET.Sdk">
  ...
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
  ...
</Project>

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

Равнина dotnet restoreне помогло мне. Мне пришлось принудительно переоценить все зависимости следующим образом:

dotnet restore --force-evaluate

Из руководства по dotnet:

Принудительное восстановление для повторной оценки всех зависимостей, даже если файл блокировки уже существует.

Через пару секунд мой компилятор перестал выдавать эту ошибку.

Я только что столкнулся с этим с ядром dotnet 5.0. Мой csproj выглядел так:

      <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

Но нужно было выглядеть так (обратите внимание на атрибут sdk элемента проекта):

      <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

У меня была эта ошибка при обновлении проекта.NET Core v2.2 до v3.1. В частности, проект модульного тестирования выдавал ошибку, которая напрямую не использовала AspNetCore пакет.

Решение описано здесь и состоит в изменении файла проекта для добавления <FrameworkReference> тег:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

Просто добавив Microsoft.AspNetCore.Mvc Пакет nuget исправил это для меня.

Изменения

<ItemGroup>
  <Reference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore">
    <HintPath>..\..\..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.identity.entityframeworkcore\2.2.0\lib\netstandard2.0\Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll</HintPath>
  </Reference>
</ItemGroup>

к

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.2.0" />
</ItemGroup>

Решил вопрос как ответил @dave-glassborow

Что в итоге сработало для меня, так это следующие шаги:

  1. Выгрузите проект и отредактируйте файл .csproj, как рекомендовано пользователем 875234 в другом ответе.
  2. Перезагрузите и перестройте проект (для меня это привело к различным ошибкам)
  3. Выгрузить проект и отменить изменения в файле .csproj
  4. Перезагрузить и перестроить проект

По пути я тоже бегал dotnet restoreпару раз, так что, возможно, это тоже как-то помогло.

Надеюсь, это поможет кому-то с похожей проблемой для меня!

Моя проблема была довольно странной. Я компилировал это приложение миллион раз и в последнее время не добавлял и не удалял какие-либо пакеты. Внезапно я начал получать эту ошибку.

Я заметил в ошибке, что она также ссылается на имя файла непосредственно перед ней. Я зашел в этот файл (класс/модель) и обнаружил серый цвет.- Я прокомментировал это и больше никаких проблем не возникло.

Ни одно из других решений, упомянутых выше, не помогло. Некоторые даже вызвали больше проблем. Удачи!

Для меня, использующего net6, проблема заключалась в том, что Rider сгенерировал эту ссылку в моей клиентской библиотеке csproj:

      
<ItemGroup>

    <Reference Include="Microsoft.AspNetCore.Mvc.Core">

      <HintPath>..\..\..\..\..\..\..\Program Files\dotnet\shared\Microsoft.AspNetCore.App\6.0.18\Microsoft.AspNetCore.Mvc.Core.dll</HintPath>

    </Reference>

  </ItemGroup>

Когда наш конвейер сборки работал, он не смог его найти, поэтому я заменил его на:

      
<ItemGroup>

    <FrameworkReference Include="Microsoft.AspNetCore.App"/>

  </ItemGroup>

источник: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/target-aspnetcore?view=aspnetcore-7.0&amp;amp;tabs=visual-studio#use-the-aspnet-core-shared-framework

Просто добавьте пакет Nuget для Microsoft.AspNetCore.WebUtilities

Добавьте эти ссылки в свою библиотеку, если вы используете библиотеку ASP NET Core с контроллерами/MVW:

      <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.9" />
</ItemGroup>

Я обнаружил эту проблему при обновлении библиотек с.NET Standard 2.0 до 2.1 или.exe с.NET Core 2.2 до 3.1.

Лучше всего переделать все, что NuGet включает в проект, с нуля. Откройте файл.csproj в текстовом редакторе и найдите раздел

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    ...
  </ItemGroup>

и удалите все обратно в

  <ItemGroup>
  </ItemGroup>

затем повторно откройте решение и переустановите все и только необходимые пакеты NuGet.

Это решает проблему, а также может помочь избавиться от остатков неиспользуемого пакета!

Добавление пакета NuGet Microsoft.AspNetCore.Mvc.ViewFeatures исправило это для меня

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

Решением было обновить Visual Studio (я обновил версию 15.5.6 до версии 15.9.1). Вот ссылка на страницу загрузки VS от Microsoft.

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