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>
但紧接着出现新问题:
- 编辑器提示:
"The file does not support code parsing or generation because it is not contained within a project that supports this code" - 近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
相关产品推荐
相关产品推荐

