Поддержка .NET 6

Введение

Начиная с Aspose.Slides 23.2, была реализована поддержка .NET6. Особенность этой поддержки заключается в том, что .NET6 больше не поддерживает System.Drawing.Common для Linux (изменение, ломающее совместимость), и Slides реализует эту графическую подсистему самостоятельно как компонент на C++.

Aspose.Slides для .NET теперь работает без зависимостей от GDI/libgdiplus на:

  • Windows
  • Linux

Поддержка MacOS находится в разработке.

Использование Slides для .NET 6 в AWS и Azure

.NET6 является предпочтительной версией для Aspose.Slides, используемой в облаке (AWS, Azure или другие облачные решения).

Ранее, когда Aspose.Slides использовался на Linux‑хосте, требовалась установка дополнительных зависимостей (libgdiplus), что часто было неудобно или непрактично (например, при использовании AWS Lambda). С Slides для .NET6 эти зависимости больше не нужны, поэтому развертывание значительно упрощается.

Еще один момент — проблемы, возникавшие при использовании Aspose.Slides в облачном решении с Windows‑хостом. Например, Azure Functions имеют ограничения для процесса и приводят к ошибкам при экспорте PDF (см. this). Использование Aspose.Slides для .NET6 решает эту проблему.

Использование пакета System.Drawing.Common и классов Slides для .NET 6 (Ошибка CS0433: тип существует и в Slides, и в System.Drawing.Common)

Иногда в проекте необходимо одновременно использовать зависимости System.Drawing и Slides для .NET6 (например, когда проект .NET6 зависит от других пакетов, которые в свою очередь зависят от System.Drawing). Это может привести к конфликтным ошибкам, например:

  • CS0433: Тип ‘Image’ существует и в ‘Aspose.Slides, Version=23.2.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56’, и в ‘System.Drawing.Common, Version=6.0.0.0’
  • CS0433: Тип ‘Graphics’ существует и в ‘Aspose.Slides, Version=23.2.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56’, и в ‘System.Drawing.Common, Version=6.0.0.0’

В этом случае можно использовать extern alias для Aspose.Slides (версии ниже 24.8):

  1. Выберите сборку Aspose.Slides в зависимостях проекта и нажмите Properties. Aspose Slides package properties
  2. Установите псевдоним (например, “Slides”). Aspose Slides alias

Теперь типы из System.Drawing.Common будут использоваться по умолчанию. Внешний псевдоним сборки следует указывать там, где требуются типы Aspose.Slides.

extern alias Slides;
using Slides::Aspose.Slides;

Полный пример:

extern alias Slides;
using Slides::Aspose.Slides;

static Slides::System.Drawing.Image GetThumbnail(Presentation pres)
{
    return pres.Slides[0].GetThumbnail();
}

Начиная с версии 24.8, устаревший публичный API с зависимостями от System.Drawing был удалён. Что касается приведённого выше примера кода, изображение слайда можно получить следующим образом.

static Aspose.Slides.IImage GetThumbnail(Presentation presentation)
{
    return presentation.Slides[0].GetImage();
}

Подробное описание нового API доступно в разделе Modern API.