Как запустить Aspose.Cells для .Net6
Обзор
Для платформ .NET6 (или более поздних версий) по сравнению с предыдущими платформами (.netcore31 или более ранними) важным отличием является графическая библиотека. В этом официальномMicrosoft Документ, в нем объясняется, что для выпусков .NET6 или более поздних версий графическая библиотека «System.Drawing.Common» будет поддерживаться только на Windows, и даются рекомендации по замене графической библиотеки.
Для продукта Apose.Cells мы провели оценку и завершили миграцию графической библиотеки. Мы используем SkiaSharp вместо System.Drawing.Common в системах, отличных от Windows, как предложено в официальной документации Microsoft. Обратите внимание, что это критическое изменение вступит в силу в версии Aspose.Cells 22.10.1 или более поздней версии для .Net6.
Для .netcore31 и более ранних версий в целях совместимости и стабильности в настоящее время мы по-прежнему используем графическую библиотеку System.Drawing.Common. Зависимости для .netcore31 или более ранней версии следующие:
- Система.Рисование.Общий, 4.7.0.
- System.Security.Cryptography.Pkcs, 5.0.1.
- System.Text.Encoding.CodePages, 4.7.0.
Запустите Aspose.Cells для .Net6 на Windows.
Сначала вы можете создать приложение .net6 с помощью VS2022, затем выбрать следующие варианты установки:
Установить через nuget
-
Искать Aspose.Cells из NuGet:Aspose.Cells for .NET NuGet Пакет. Вы также можете установить Aspose.Cells из менеджера пакетов Nuget в VS2022.
-
«SkiaSharp» или «System.Drawing.Common» будут установлены автоматически как зависимость Aspose.Cells 22.10.1 или более поздней версии для платформ .Net6, что зависит от конфигурации «Целевой ОС» в вашем проекте.
- Установите для «Целевой ОС» значение «Windows» для вашего проекта, вы будете использовать «System.Drawing.Common» в качестве зависимости от вашей системы Windows для проекта .Net6. В этой конфигурации результат отрисовки ближе к .netcore31 или более раннему варианту.
- Установите для параметра «Целевая ОС» значение «Нет» или другие параметры вашего проекта. Вы будете использовать «SkiaSharp» в качестве зависимости от вашей системы Windows для проекта .Net6.Обратите внимание, что версия, использующая «SkiaSharp» в качестве зависимости, не поддерживает функцию печати на принтере.
Установить через MSI или DLL.
-
Откройте каталог установки или каталог DLL, затем выберите шаг 3 или 4 ниже:
-
найдите подкаталог «net6.0-windows», добавьте в него Aspose.Cells.dll в свое приложение .net6. Вручную добавьте следующие пакеты nuget в свой проект .net6:
- Система.Рисование.Общий, 4.7.0.
- System.Security.Cryptography.Pkcs, 6.0.3.
- System.Text.Encoding.CodePages, 4.7.0.
Таким образом, вы будете использовать «System.Drawing.Common» в качестве зависимости от вашей системы Windows для проекта .Net6. В этой конфигурации результат отрисовки ближе к .netcore31 или более раннему варианту.
- найдите подкаталог «net6.0», добавьте в него Aspose.Cells.dll в свое приложение .net6. Вручную добавьте следующие пакеты nuget в свой проект .net6:
- СкиаШарп, 2.88.6.
- System.Security.Cryptography.Pkcs, 6.0.3.
- System.Text.Encoding.CodePages, 4.7.0.
Таким образом, вы будете использовать «SkiaSharp» в качестве зависимости от вашей системы Windows для проекта .Net6.Обратите внимание, что версия, использующая «SkiaSharp» в качестве зависимости, не поддерживает функцию печати на принтере.
Запустите Aspose.Cells для .Net6 в Linux.
См. метод установки по номеру Windows. Вы можете выбрать SkiaSharp только в качестве зависимости графической библиотеки от системы Linux.
Вам необходимо выполнить следующие дополнительные операции, чтобы обеспечить правильное использование SkiaSharp под Linux:
- Запустите следующую команду в вашей системе Linux:
apt-get update && apt-get install -y libfontconfig1
OR
apk update && apk add fontconfig
-
Добавьте пакеты nuget «SkiaSharp.NativeAssets.Linux 2.88.6» в свой проект .net6.
-
Или вы можете добавить nuget пакет «SkiaSharp.NativeAssets.Linux.NoDependologies 2.88.6» в свой проект .net6 вместо двух шагов, описанных выше.
Пример Dockerfile для Ubuntu
-
Добавьте пакеты nuget «SkiaSharp.NativeAssets.Linux 2.88.6» в свой проект .net6.
-
Используйте следующий файл Docker:
# Ubuntu 20.04 FROM mcr.microsoft.com/dotnet/runtime:6.0-focal AS base WORKDIR /app # add "libfontconfig1" package if using "SkiaSharp.NativeAssets.Linux" in your project # Or you need to use "SkiaSharp.NativeAssets.Linux.NoDependencies" in your project RUN apt-get update && apt-get install -y libfontconfig1 # Copy fonts from local to docker # For example, put a "fonts" folder in your project folder, and put the font files in it, # then, use the following line: COPY fonts/ /usr/share/fonts FROM mcr.microsoft.com/dotnet/sdk:6.0-focal AS build WORKDIR /src COPY ["Ubuntu_Docker.csproj", "."] RUN dotnet restore "./Ubuntu_Docker.csproj" COPY . . WORKDIR "/src/." RUN dotnet build "Ubuntu_Docker.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Ubuntu_Docker.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Ubuntu_Docker.dll"]
Пример Dockerfile для Alpine
-
Добавьте пакеты nuget «SkiaSharp.NativeAssets.Linux 2.88.6» в свой проект .net6.
-
Используйте следующий файл Docker:
# Alpine 3.16 FROM mcr.microsoft.com/dotnet/runtime:6.0-alpine3.16 AS base WORKDIR /app # add "fontconfig" package if using "SkiaSharp.NativeAssets.Linux" in your project # Or you need to use "SkiaSharp.NativeAssets.Linux.NoDependencies" in your project RUN apk update && apk add fontconfig # Copy fonts from local to docker # For example, put a "fonts" folder in your project folder, and put the font files in it, # then, use the following line: COPY fonts/ /usr/share/fonts FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine3.16 AS build WORKDIR /src COPY ["Alpine_Docker.csproj", "."] RUN dotnet restore "./Alpine_Docker.csproj" COPY . . WORKDIR "/src/." RUN dotnet build "Alpine_Docker.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Alpine_Docker.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Alpine_Docker.dll"]