发布&部署
信息
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.Linux 或 SkiaSharp.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>
当命令行发布时,则需要 指定 DebugType 为 none
dotnet publish -p DebugType=none