Mac下VS 7.4.3运行Web窗体时CS1902错误求助
兄弟,这个问题我之前帮人排查过好多次,根源其实很清晰:你用的Mono 5.8.1版本太老了,它根本不支持portable这个调试类型选项——portable是后来.NET Core引入的特性,而你跑的Web窗体属于传统.NET Framework项目,老版Mono只认full或pdbonly这俩选项,自然就报错了。
给你几个一步步的修复方案,按顺序试:
修改.csproj文件(要改全)
你之前只加了<DebugType>portable</DebugType>,这完全搞反了!应该把所有配置节点里的这个值改成pdbonly或者full。打开你的.csproj文件,找到所有类似下面的节点:<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugType>portable</DebugType> </PropertyGroup>把
<DebugType>portable</DebugType>替换成<DebugType>pdbonly</DebugType>,注意要检查所有Configuration(比如Debug、Release)对应的PropertyGroup,别漏了。通过VS项目设置可视化调整
如果手动改XML怕漏,直接在VS里操作更直观:右键你的项目→选择Options→进入Build→Compiler标签页,找到Debugging Information下拉框,选择pdbonly或者full,不要选portable,然后保存设置。清理缓存+重新生成
有时候项目的bin/obj缓存会“记住”老的设置,先手动删除项目目录下的bin和obj文件夹,然后回到VS里点击Build→Rebuild Solution,确保新的设置生效。可选:升级Mono版本
Mono 5.8.1是2018年的老版本了,如果你之后还要做更多.NET Framework相关开发,建议升级到Mono 6.x及以上的稳定版本——新版Mono对portable调试类型有了兼容支持,但对于Web窗体这类传统项目,还是用pdbonly更稳妥,避免不必要的兼容问题。
内容的提问来源于stack exchange,提问作者Lieutenant Dan

