在.NET6中已经在runtimeconfig.template.json文件中配置了
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
现在还是会报错,使用的aspose.Cells导出的excel时报错,之前还是正常的,怎么能解决兼容呢
System.Drawing.Common is not supported on this platform" 错误通常是由于在特定平台上不支持 System.Drawing.Common 导致的。在 .NET 6 中,可能需要执行以下步骤来解决这个问题:
检查 Runtime Identifier (RID):首先确保你的应用程序的 RID 设置正确,以便在运行时选择正确的底层操作系统平台。可以在项目文件(.csproj)中的 <RuntimeIdentifier> 元素中设置 RID,或者通过命令行工具设置。例如:
xml
Copy code
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 适用于 Windows 64 位平台 -->
</PropertyGroup>
使用 Aspose.Cells:Aspose.Cells 是一个 Excel 处理库,不依赖于 System.Drawing.Common。如果你的应用程序依赖于 Aspose.Cells 来导出 Excel 文件,并且之前正常工作,那么问题可能不是由于 System.Drawing.Common 引起的。请确保你的 Aspose.Cells 版本是最新的,以便解决任何潜在的兼容性问题。
检查运行时配置文件:你提到已经在 runtimeconfig.template.json 文件中配置了 "System.Drawing.EnableUnixSupport": true。确保你的配置生效,可能需要重建你的项目或清理/重建解决方案以确保配置文件被正确加载。
更新 System.Drawing.Common:如果问题仍然存在,尝试更新 System.Drawing.Common 到最新版本,以确保修复了任何已知的问题。可以通过 NuGet 包管理器来更新它。
如果你尝试了以上步骤仍然无法解决问题,可能需要进一步检查你的应用程序代码和依赖项,以查找潜在的问题或冲突。你还可以查看 Aspose.Cells 的文档或联系他们的支持团队以获取更多关于在 .NET 6 中使用该库的帮助。
在windows本地运行没有问题的,只有部署在linux中会报这个错,之前使用这种方式一直是成功的,用的Aspose.Cells引用dll的方式4.8版本,里面有使用到Drawing.Common这个类库,我看了编译后的类库也是最新版本的
有没有安装libgdiplus
之前还是正常
做了什么改动
dockerfile里有安装这个库
RUN apt-get install iputils-ping dnsutils libc6-dev libgdiplus -y
设计这个的没做改动 改动的都是业务代码
@二震: aspose.Cells的版本号是多少,改动有更新过这个包么
@复制粘贴机器人: 问题解决了,谢谢,是升级了项目中System.Data.OleDb到7.0版本,这个包里面包含了System.Drawing.Common.dll 7.0版本,降到6.0就可以了