如何针对.NET Standard 2.0创建.NET MVC应用并解决运行报错?
问题原因与解决办法
首先得明确一个关键概念:.NET Standard 2.0 是类库的目标框架,不是用来构建可执行应用的。它本质上是一套API规范,定义了不同.NET平台(比如.NET Core、.NET Framework)都能兼容的API集合,但它本身没有独立的运行时环境,没办法直接运行应用程序。
你用dotnet new mvc生成的ASP.NET Core MVC应用,默认目标框架是netcoreapp2.0是有道理的——因为ASP.NET Core应用需要一个可运行的目标框架(TFM),而netcoreapp系列就是专门为.NET Core可执行应用设计的,自带运行时支持。
当你手动把项目改成netstandard2.0后,虽然构建能通过(因为语法上没问题),但执行dotnet run时,CLI会发现这个项目的目标框架没有运行时,自然就会抛出那个错误。
解决步骤:
- 修正目标框架:把
.csproj里的TargetFramework改回netcoreapp2.0(如果需要更高版本也可以,比如netcoreapp3.1,只要兼容你的依赖)。 - 确保OutputType设置正确:ASP.NET Core应用的
OutputType必须是Exe,不过如果你用的是Microsoft.NET.Sdk.WebSDK,这个属性会自动设置,不需要手动加,但如果你的手动修改删掉了它,记得加回去。
举个正确的.csproj示例:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project>
补充说明:
如果你的需求是让项目引用.NET Standard 2.0的类库,正确的做法是单独创建一个类库项目(用dotnet new classlib -f netstandard2.0),然后让你的MVC应用通过项目引用或者NuGet包的方式使用这个类库,而不是把MVC应用本身改成.NET Standard目标框架。
内容的提问来源于stack exchange,提问作者Robotronx
相关产品推荐
相关产品推荐

