You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让VS 2022使用.NET Core 5编译.NET Core 5控制台应用?

如何让Visual Studio 2022使用.NET Core 5编译指定项目?

问题背景

我有一个.NET Core 5控制台应用,项目文件中明确指定了目标框架:

<TargetFramework>net5.0</TargetFramework>

但在Visual Studio 2022(版本17.4.0 Preview 6)中编译时,构建输出显示系统实际使用了.NET Core 7的预览版SDK:

1>C:\Program Files\dotnet\sdk\7.0.100-rc.2.22477.23\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(257,5):
message NETSDK1057: You are using a preview version of .NET.

我的机器上已安装.NET 5 SDK,执行dotnet --list-sdks的输出如下:

PS B:\...> dotnet --list-sdks
5.0.413 [C:\Program Files\dotnet\sdk]
7.0.100-rc.2.22477.23 [C:\Program Files\dotnet\sdk]

注:我知道.NET Core 5已过时。

项目相关文件

解决方案文件(NetCore5Console.sln)

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33027.239
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCore5Console", "ConsoleNetCore5\NetCore5Console.csproj", "{43DE576A-1052-4AC5-B612-D88D9D6624B6}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {43DE576A-1052-4AC5-B612-D88D9D6624B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {43DE576A-1052-4AC5-B612-D88D9D6624B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {EF895EC5-66AD-4B5A-ACFF-594C848D2311}
    EndGlobalSection
EndGlobal

项目文件(NetCore5Console.csproj)

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
      <CheckEolTargetFramework>false</CheckEolTargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
  </ItemGroup>

</Project>

代码文件(Program.cs)

using System;
using System.Text.RegularExpressions;

namespace ConsoleNetCore5
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

解决方法

方法一:通过global.json强制指定SDK版本(推荐)

在解决方案根目录或项目根目录创建global.json文件,内容如下:

{
  "sdk": {
    "version": "5.0.413",
    "rollForward": "disable"
  }
}

该文件会让dotnet CLI和Visual Studio优先使用指定版本的SDK构建项目,彻底避免自动升级到高版本SDK的问题。

方法二:在Visual Studio中直接设置项目SDK版本

  1. 右键项目 → 选择「属性」
  2. 切换到「应用程序」选项卡,点击「高级」按钮
  3. 在弹出的「高级构建设置」对话框中,找到「SDK版本」下拉框,选择已安装的5.0.413版本
  4. 保存设置后重新编译项目

方法三:临时通过环境变量限制SDK版本

如果仅需临时测试,可在命令行中设置环境变量后执行构建:

$env:DOTNET_ROLL_FORWARD="Disable"
dotnet build

注意:这种方式仅对当前命令行会话有效,Visual Studio需要重启才能识别该环境变量,不适合长期使用。


内容的提问来源于stack exchange,提问作者Thomas W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:25:14