在构建ASP.NET Core MVC应用程序时出现此错误:
错误CS0012类型'Controller'是在以下程序集中定义的: 未引用。您必须添加对程序集的引用 'Microsoft.AspNetCore.Mvc.ViewFeatures,版本= 3.0.0.0, 文化=中性,PublicKeyToken = adb9793829ddae60'
当我转到NuGet网站时,我看到Microsoft.AspNetCore.Mvc.ViewFeatures
的最新版本是2.2.0
。
我该怎么办?
答案 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或引用了导致不匹配的内容。