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

C# Windows Forms项目从.NET 4.8迁移至.NET 8.0的问题与解决

问题背景与解决过程

初始触发错误

几个月前用Visual Studio 2022创建了基于C#和Windows Forms的项目(依赖.NET 4.8),搁置后重新开发时遇到编译错误:

"feature default interface implementation is not available in c# 7.3"

第一次配置调整与衍生问题

排查发现项目使用旧版.NET框架,于是修改.csproj文件:

  • 添加 <TargetFramework>net8.0</TargetFramework> 和 <LangVersion>latest</LangVersion>
  • 删除原有的旧TargetFramework配置

随后出现重复编译项报错,添加以下配置解决该问题:

<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>

但紧接着出现新问题:

  1. 编辑器提示:"The file does not support code parsing or generation because it is not contained within a project that supports this code"
  2. 近200条Windows Forms相关的类型/命名空间不存在错误,例如代码行:
    private System.Windows.Forms.DataGridViewTextBoxColumn totalSpacesDataGridViewTextBoxColumn;
    

尝试手动添加引用无效,且不愿重新创建项目(表单设计耗时较多)。

第二次配置修正与后续报错

再次调整.csproj配置:

  • 将TargetFramework替换为 <TargetFramework>net8.0-windows</TargetFramework>
  • 添加 <UseWindowsForms>true</UseWindowsForms>

修改后,文件解析提示消失,Forms相关错误全部解决,但又出现新问题:

  • AirportSystemDataSet 和 AirportSystemDataSetTableAdapter 类型不存在的编译错误
  • COM引用相关警告

最终解决操作

通过以下步骤让项目成功运行:

  • 注释并删除所有与数据集相关的代码和可视化组件
  • 从.csproj文件中移除指定的COM引用代码块
  • 注释掉涉及重复程序集的错误代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:17:40