跳到主要内容

发布&部署

信息

DOTNET 部署中遇到的一些问题及处理方式

部署中的一些问题

1.缺少软件包 libgdiplus

此问题是由于项目中使用了 System.Drawing,而System.Drawing组件依赖与GDI+,然而Linux上并没有GDI+,所以建议后续项目中使用 SkiaSharp 替换 System.Drawing

但是如果已经使用了System.Drawing,则手动安装 libgdiplus 软件包也可正常使用

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

rpm -Uvh epel-release*rpm

sudo yum install -y libgdiplus libgdiplus-devel
2.使用 SkiaSharp 提示找不到 libSkiaSharp

解决的方法是在 Nuget 中引用 SkiaSharp.NativeAssets.LinuxSkiaSharp.NativeAssets.Linux.NoDependencies 库。发布后会在 /runtimes/linux-x64/native/ 目录下生成 libSkiaSharp.so 文件。

dotnet add package SkiaSharp.NativeAssets.Linux.NoDependencies

编辑项目文件 .csproj 增加下列配置

projectName.csproj
<Project Sdk="Microsoft.NET.Sdk">
...
<ItemGroup>
<PackageReference Include="SkiaSharp" Version="2.88.8" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.8" />
</ItemGroup>
</Project>

一些优化

1.去掉使用不上的语言包

编辑项目文件 .csproj 增加下列配置

projectName.csproj
<Project Sdk="Microsoft.NET.Sdk">
...
<PropertyGroup>
<SatelliteResourceLanguages>en-US;zh-Hans</SatelliteResourceLanguages>
</PropertyGroup>
</Project>
2.去除 .pdb 文件

当使用开发工具发布,需编辑项目文件 .csproj 增加下列配置

projectName.csproj
<Project Sdk="Microsoft.NET.Sdk">
...

<PropertyGroup>
<AllowedReferenceRelatedFileExtensions>none</AllowedReferenceRelatedFileExtensions>
</PropertyGroup>
</Project>

当命令行发布时,则需要 指定 DebugTypenone

dotnet publish -p DebugType=none