Несоответствие версии Microsoft.AspNetCore.Mvc.ViewFeatures (запрашивается 3.0.0, но последняя версия - 2.2.0) - PullRequest
0 голосов
/ 27 октября 2019

Я получаю эту ошибку при создании приложения ASP.NET Core MVC:

Ошибка CS0012 Тип «Контроллер» определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'Microsoft.AspNetCore.Mvc.ViewFeatures, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60'

enter image description here

И когда я захожу на сайт NuGet, я вижу, что последняя версия Microsoft.AspNetCore.Mvc.ViewFeatures - 2.2.0.

Что мне делать?

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Приложения ASP.NET Core должны использовать веб-SDK. Если вы создадите новый проект ASP.NET Core MVC, а затем проверьте файл проекта, вы увидите, что он имеет Sdk="Microsoft.NET.Sdk.Web". Если у вас просто написано Microsoft.NET.Sdk, вы можете изменить его.

Если вы не используете веб-SDK по уважительной причине (например, ваш проект - это библиотека классов, а не приложение / exe)), а затем, учитывая номер версии, на которую он жалуется, ясно, что вы используете .NET Core 3.0. В версии 3.0 и выше библиотеки фреймворка больше не распространяются как пакеты NuGet, а вместо этого используют новый элемент FrameworkReference MSBuild без версии. Когда все нацелено на .NET Core 3.0 и выше, многие проблемы с версиями пакетов исчезнут.

В любом случае, на странице документов ASP.NET есть хороший пример на странице для миграции с2,2 до 3,0. Также немного больше информации о FrameworkReference.

Вот пример, который мне нравится, показывает разницу между 3.0 и более ранними версиями:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netcoreapp3.0;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.0" />
  </ItemGroup>
</Project>
0 голосов
/ 27 октября 2019

Возможно, вы обновили nuget или ссылались на что-то, что вызывает несоответствие.

  1. откройте свое решение иди в проект
  2. проверьте ссылки -> Microsoft ... ViewFeatures
  3. щелкните правой кнопкой мыши окно свойств, вы должны увидеть версию там
  4. проблема может заключаться в том, что некоторым dll требуется более высокая версия этого пакета
  5. консолидация / обновление некоторого nuget, поставляющего этот пакеттакже может помочь, dll / пакет мог быть помещен в другой nuget вместо того, чтобы отправлять его отдельно
...