使用Mono 6.12.0编译.NET 4.7.2项目无报错但生成DLL为空求助
.NET Framework 4.7.2项目在Mono 6.12.0下编译后类为空的排查方案
1. 核对项目框架与语言版本配置
打开项目的.csproj文件,确认以下配置:
<TargetFrameworkVersion>必须为v4.7.2,避免框架版本不匹配- 添加或修改
<LangVersion>为7.3(Mono 6.12.0对.NET Framework 4.7.2兼容的最高C#版本),高版本C#语法可能导致编译静默跳过类文件
2. 检查编译日志与输出路径
- 编译时添加
msbuild /v:detailed参数,查看详细日志,搜索目标类名,确认是否存在编译跳过的提示 - 确认编译命令指定的输出路径正确,避免产物生成到临时或未检查的目录
3. 验证类文件的编译属性
- 确保目标类文件的生成操作设置为
编译(右键文件→属性→生成操作) - 检查
.csproj中的<Compile>节点,确认目标类的文件路径已包含在编译列表内,未被排除
4. 清理残留后重新编译
- 执行
msbuild /t:Clean清理旧产物,或手动删除项目下的bin、obj文件夹 - 重新执行编译命令,避免旧文件干扰
5. 最小化项目测试
- 创建仅包含目标类的空.NET Framework 4.7.2项目,用相同Mono版本编译,验证是否能生成正常程序集
- 若最小项目正常,逐步添加原项目依赖,定位是否为第三方库导致的编译异常
内容的提问来源于stack exchange,提问作者AureumApes
相关产品推荐
相关产品推荐

