Microsoft.AspNetCore.Mvc.ViewFeatures版本不匹配(要求3.0.0,但最新版本是2.2.0)

时间:2019-10-27 05:24:25

标签: c# .net-core nuget

在构建ASP.NET Core MVC应用程序时出现此错误:

  

错误CS0012类型'Controller'是在以下程序集中定义的:   未引用。您必须添加对程序集的引用   'Microsoft.AspNetCore.Mvc.ViewFeatures,版本= 3.0.0.0,   文化=中性,PublicKeyToken = adb9793829ddae60'

enter image description here

当我转到NuGet网站时,我看到Microsoft.AspNetCore.Mvc.ViewFeatures的最新版本是2.2.0

我该怎么办?

3 个答案:

答案 0 :(得分:2)

我的类库项目中遇到了同样的问题。我通过将以下代码添加到项目的.csproj文件中找到了解决方案。我希望它也对您有用。

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

答案 1 :(得分:1)

ASP.NET Core应用程序应使用Web SDK。如果创建一个新的ASP.NET Core MVC项目,然后检查该项目文件,则会看到该文件具有Sdk="Microsoft.NET.Sdk.Web"。如果您只是说Microsoft.NET.Sdk,则可能要更改它。

如果您出于正当理由不使用Web SDK(例如,您的项目是类库,而不是应用程序/ exe),那么考虑到它抱怨的版本号,很显然您正在使用.NET Core 3.0。在3.0及更高版本中,框架库不再作为NuGet软件包分发,而是使用新的无版本FrameworkReference MSBuild项。一旦一切都针对.NET Core 3.0和更高版本,很多软件包版本控制问题将消失。

无论如何,ASP.NET文档页面在页面上有一个good example,可以从2.2迁移到3.0。还有a little more information on 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>

答案 2 :(得分:0)

您可能已经更新了nuget或引用了导致不匹配的内容。

  1. 打开您的解决方案进入项目
  2. 检查引用-> Microsoft ... ViewFeatures
  3. 右键单击“检查属性”窗口,您应该在那里看到版本
  4. 问题可能是某些dll需要此软件包的更高版本
  5. 合并/更新提供此软件包的一些nuget也可能会有所帮助,dll /软件包可能已放入另一个nuget中,而不是单独运送