Mac版Visual Studio中Xamarin项目缺失System.Drawing命名空间求助
解决Mac版VS中旧Xamarin项目缺失System.Drawing.PointF的问题
你碰到的这个问题其实挺常见的——旧Xamarin Studio依赖的System.Drawing是Mono框架提供的实现,但现在新版Visual Studio for Mac基于的.NET环境(尤其是苹果平台的Xamarin.iOS/Xamarin.Mac)已经不再默认包含这个命名空间,而且官方也不推荐跨平台项目继续依赖它。针对你需要的PointF结构,这里有两个可行的方案:
方案一:使用苹果平台原生的CGPoint(推荐)
这是当前Xamarin/.NET MAUI在苹果平台的标准做法,完全替代PointF的功能,还更贴合平台生态:
- 对于Xamarin.iOS或Xamarin.Mac项目,直接用
CoreGraphics.CGPoint结构,它的X、Y属性和PointF完全一致 - 如果需要和旧代码里的
PointF互相转换,只需要简单赋值:// PointF转CGPoint var cgPoint = new CoreGraphics.CGPoint(pointF.X, pointF.Y); // CGPoint转PointF var pointF = new System.Drawing.PointF(cgPoint.X, cgPoint.Y); - 要是你的代码在共享项目里,可以用条件编译统一类型:
#if __IOS__ || __MAC__ using PointType = CoreGraphics.CGPoint; #else // 其他平台可对应定义,比如Windows用System.Drawing.PointF using PointType = System.Drawing.PointF; #endif // 后续直接用PointType即可 var myPoint = new PointType(10.5f, 20.5f);
方案二:安装System.Drawing.Common NuGet包(仅旧代码兼容)
如果必须保留原有System.Drawing.PointF的代码,也可以通过NuGet包获取,但要注意兼容性限制:
- 在VS for Mac里右键项目 → 管理NuGet包
- 搜索
System.Drawing.Common,安装和项目.NET版本匹配的包(比如旧Xamarin项目用.NET Standard 2.0,就选对应版本) - 安装后如果仍报错,编辑项目文件(.csproj),添加以下配置启用Mac平台的兼容支持:
<PropertyGroup> <EnableSystemDrawingUnixSupport>true</EnableSystemDrawingUnixSupport> </PropertyGroup>
⚠️ 提醒:官方已标记System.Drawing.Common在非Windows平台为过时特性,未来版本可能不再支持,这个方案只适合临时兼容旧代码,长期建议迁移到平台原生类型。
内容的提问来源于stack exchange,提问作者koviroli
相关产品推荐
相关产品推荐

