如何将项目目标框架从.NET 5.0转换为.NET Standard并解决相关报错?
报错原因
.NET Standard是一套跨.NET平台的API规范,不支持作为可执行程序的目标框架,仅能用于类库类型的项目。你当前项目的输出类型为Exe,修改为.NET Standard TFM后自然无法通过dotnet run运行,这是正常现象。
正确转换操作步骤
- 第一步:调整项目输出类型
打开.csproj文件,删除<OutputType>Exe</OutputType>节点,或者将值修改为Library。你要制作NuGet包本身就应该使用类库类型的项目,不需要输出可执行文件。 - 第二步:选择匹配的.NET Standard版本
根据你需要兼容的最低.NET平台版本选择对应的.NET Standard版本:- 需要兼容.NET Framework 4.6.1及以上、.NET Core 2.0及以上版本,选择
.NET Standard 2.0 - 仅需要兼容.NET Core 3.0及以上、.NET 5及以上版本,可选择
.NET Standard 2.1
将.csproj中的TargetFramework节点修改为对应值,示例:
<TargetFramework>netstandard2.0</TargetFramework> - 需要兼容.NET Framework 4.6.1及以上、.NET Core 2.0及以上版本,选择
- 第三步:验证项目编译
修改完成后执行dotnet build确认项目可以正常编译,需要生成NuGet包时执行dotnet pack即可输出对应的nupkg文件。
补充说明
如果你需要测试类库的功能,不要直接在类库项目上执行dotnet run,额外创建一个控制台项目或者单元测试项目引用该类库即可,测试项目可以使用任意可运行的TFM(比如net6.0、net7.0),不会影响类库本身的.NET Standard兼容性。
内容的提问来源于stack exchange,提问作者ZHAN LU
相关产品推荐
相关产品推荐

