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

Ubuntu23.04下.NET7.0.105编译报错:缺少Microsoft.NET.Sdk.WindowsDesktop

解决.NET 7在Ubuntu编译时MSB4019找不到WindowsDesktop.targets的问题
  • 先明确问题根源:
    你的项目虽声明使用Microsoft.NET.Sdk,但内部大概率包含了WPF或WinForms这类Windows桌面专属的代码/引用。.NET 7开始,WindowsDesktop SDK已整合进主SDK,但Linux环境默认不预装桌面相关构建组件,且这些组件仅支持构建,无法在Linux上运行Windows桌面应用。

  • 分场景给出解决方法:

    1. 如果是跨平台项目:
      检查项目代码和.csproj文件,删除所有WPF/WinForms相关的引用、XAML文件或桌面专属API调用,确保项目仅依赖跨平台的.NET组件。

    2. 如果确实需要编译Windows桌面项目(最终部署到Windows):

      • 方案一:修改项目文件
        将目标框架改为Windows专属的net7.0-windows,并显式启用对应桌面框架:

        <Project Sdk="Microsoft.NET.Sdk">
          <PropertyGroup>
            <OutputType>WinExe</OutputType>
            <TargetFramework>net7.0-windows</TargetFramework>
            <!-- 根据项目类型二选一 -->
            <UseWPF>true</UseWPF> <!-- WPF项目用此行 -->
            <!-- <UseWindowsForms>true</UseWindowsForms> <!-- WinForms项目用此行 -->
          </PropertyGroup>
        </Project>
        

        修改后SDK会自动识别并加载所需的桌面构建目标,无需手动引用旧版WindowsDesktop SDK。

      • 方案二:安装Linux上的.NET桌面构建组件
        执行以下命令安装桌面相关SDK包:

        sudo apt update
        sudo apt install dotnet-desktop-7.0
        

        安装完成后重新执行dotnet build 'appname'.csproj即可。

    3. 清理过时配置:
      检查项目文件中是否存在类似<Import Project="Sdk\Microsoft.NET.Sdk.WindowsDesktop" />的旧语句,直接删除这类过时配置。

内容的提问来源于stack exchange,提问作者ReinW

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:57:12