适用于 .NET 6 及更高版本的跨平台包
介绍
Aspose.Slides for .NET 以两个 NuGet 包的形式发布。Aspose.Slides.NET 通过 Microsoft 的 System.Drawing.Common 库绘制幻灯片。Aspose.Slides.NET6.CrossPlatform 则使用其自己的图形引擎进行绘制。本文说明第二个包存在的原因、它可以运行的环境、在 Linux 上的需求,以及它如何与 System.Drawing.Common 在同一项目中共存。
为什么需要单独的包
从 .NET 6 开始,Microsoft 仅在 Windows 上支持 System.Drawing.Common。因此,在 Linux 上 Aspose.Slides.NET 除了需要 libgdiplus 库外,还需要 System.Drawing.EnableUnixSupport 开关;如果项目引用了 7 版或更高版的 System.Drawing.Common,则会失败。System Requirements 描述了这些条件。
Aspose.Slides.NET6.CrossPlatform 不使用 System.Drawing.Common 或 libgdiplus。它的图形引擎是一个原生库,包中为每个受支持平台都包含一个构建。两个包提供相同的 Aspose.Slides 命名空间和类,因此从一个切换到另一个只需更改包引用,而无需修改代码。
| Aspose.Slides.NET | Aspose.Slides.NET6.CrossPlatform | |
|---|---|---|
| 图形 | System.Drawing.Common | 包中包含的本地图形引擎 |
| 目标框架 | net462, net6.0, netstandard2.0 |
net6.0 |
| Linux 要求 | libgdiplus 和 System.Drawing.EnableUnixSupport 开关 |
fontconfig |
| Alpine Linux | 受支持 | 不受支持 |
支持的平台
Aspose.Slides.NET6.CrossPlatform 可在以下平台上与 .NET 6 及更高版本一起使用:
- Windows:x86 和 x64。原生库使用 Microsoft Visual C++ 运行时;请参阅 System Requirements。
- Linux:x64(glibc 2.23 或更高)以及 ARM64(glibc 2.39 或更高)。
- macOS:x64(Intel)和 ARM64(Apple silicon)。
它不在 Windows ARM64、Alpine Linux 或其他基于 musl 而非 glibc 的发行版,以及使用较旧 glibc(如 CentOS 7)的发行版上运行。这些系统请使用 Aspose.Slides.NET。
在 Linux 上安装
在 Linux 上,包需要 fontconfig 库,但不需要 libgdiplus。在 Debian 和 Ubuntu 上,先安装 fontconfig,然后将包添加到项目中:
sudo apt-get update && sudo apt-get install -y libfontconfig1
dotnet add package Aspose.Slides.NET6.CrossPlatform
在 Debian 和 Ubuntu 上,libfontconfig1 同时安装 DejaVu 字体,因此文本能够正常渲染,无需额外的字体包。如果没有 fontconfig,创建 Presentation 会因 TypeInitializationException 失败,其内部的 DllNotFoundException 报告无法打开 libfontconfig.so.1。System Requirements 包含一个检查设置的简短程序。
云和容器主机
由于不需要 libgdiplus,Aspose.Slides.NET6.CrossPlatform 是在无法安装 libgdiplus 的 Linux 主机上使用的包。它仍然需要 fontconfig 和字体,而最小化的基础镜像可能缺少这些。例如,.NET 8 的 AWS Lambda 基础镜像既不包含 libgdiplus 也不包含 fontconfig。在基于该镜像构建的容器镜像中,运行 dnf install -y fontconfig,该命令还会安装 Noto Sans 字体。
有关特定云平台的指南,请参阅 Aspose.Slides on Cloud Platforms。
在同一项目中使用 System.Drawing.Common (CS0433)
使用 Aspose.Slides.NET6.CrossPlatform 的项目也可以引用 System.Drawing.Common,无论是直接引用还是通过其他包。当前版本的 Aspose.Slides 未在 System 命名空间中公开类型,因此这两个库不会冲突,您可以在同一个文件中同时使用 Aspose.Slides 和 System.Drawing 命名空间。
如果编译器因 Image 或 Graphics 等类型同时存在于 Aspose.Slides 和 System.Drawing.Common 而报告 CS0433 错误,则说明项目使用了较旧版本的 Aspose.Slides。请将包更新到最新版本。Aspose.Slides 将渲染后的图像作为 IImage 对象返回,相关内容在 Modern API 中有说明。
常见问题
从 Aspose.Slides.NET 切换到 Aspose.Slides.NET6.CrossPlatform 时,我需要更改代码吗?
不需要。两个包提供相同的 Aspose.Slides 命名空间和类,因此只需更换包引用。Aspose.Slides.NET6.CrossPlatform 不需要 System.Drawing.EnableUnixSupport 开关。在项目中只能添加这两个包中的一个。
我可以在 .NET Framework 项目中使用 Aspose.Slides.NET6.CrossPlatform 吗?
不能。该包仅针对 .NET 6 及更高版本。对于 .NET Framework 4.6.2 及更高版本,请使用 Aspose.Slides.NET。