.NET MAUI调用平台特定代码在JetBrains Rider编译失败问题
解决Rider中.NET MAUI平台特定代码编译报错CS8795的问题
问题原因
你遇到的CS8795错误是严格遵循C#语法规则导致的:带有访问修饰符(如public、protected)的partial方法必须存在对应的实现部分。
Visual Studio对该规则的检查存在宽松场景,但Rider严格执行C#规范,因此触发了报错。
修复步骤
检查共享项目中的partial方法定义
打开DeviceOrientationService.cs共享代码文件,定位GetOrientation()方法:- 若方法带有
public/protected等访问修饰符,要么移除这些修饰符(让它成为默认的private partial方法,无实现时编译器会自动忽略),要么确保所有目标平台项目中都存在对应实现。 - 错误示例(带访问修饰符但无实现):
public partial class DeviceOrientationService { // 错误:带public修饰符的partial方法必须有实现 public partial Orientation GetOrientation(); } - 正确写法1(移除访问修饰符):
public partial class DeviceOrientationService { // 默认private,无实现也不会报错 partial Orientation GetOrientation(); } - 正确写法2(保留访问修饰符,确保平台有实现):
共享代码:
平台实现代码(以Android为例):public partial class DeviceOrientationService { public partial Orientation GetOrientation(); }public partial class DeviceOrientationService { public partial Orientation GetOrientation() { // 平台特定实现逻辑 return Orientation.Portrait; } }
- 若方法带有
验证平台项目的partial方法签名一致性
确保各平台(Android、iOS、Windows等)的DeviceOrientationService实现文件中,GetOrientation()方法的访问修饰符、返回值、参数列表与共享代码完全匹配。清理并重建解决方案
在Rider中依次执行:Build > Clean SolutionBuild > Rebuild Solution
清除编译缓存可能引发的异常问题。
内容的提问来源于stack exchange,提问作者Cruik
相关产品推荐
相关产品推荐

