[英]Why unable to remove System.Drawing and replace with NuGet package System.Drawing.Common
[英]NuGet package for .NET System.Drawing.Common 4.5.1 contains incorrect version of assemblies
我正在尝试根据(旧版).NET Standard 2.0 在项目中使用System.Drawing.Common
。 如果我尝试以 Standard 2.1 为目标,我的依赖项之一pythonnet 会遇到兼容性问题,因此我需要坚持使用 2.0,直到 pythonnet 正式支持 .NET Standard。 目前,如果我的程序集面向 .NET Standard 2.0,pythonnet 可以导入我的程序集,但不适用于 .NET Standard 2.1。
对于 .NET Standard 2.0 兼容性,可用的最新包是System.Drawing.Common 4.5.1 。 安装后,我的解决方案构建但在运行时我收到错误
System.PlatformNotSupportedException: 'System.Drawing is not supported on this platform.'
根据这个页面,这个版本的System.Drawing.Common
包应该能够针对 .NET Standard 2.0。 我发现NuGet 包中包含多个针对不同平台的System.Drawing.Common.dll
文件,但文件版本为4.6.2。
我是否遗漏了什么或者这是 NuGet 包中的错误? 情况似乎是这样。
版本号不是问题。 不要求或保证任何程序集版本、文件版本或包版本都匹配。
PlatformNotSupportedException 将来自其他一些问题,尽管查看包我不太确定是什么。 在很大程度上取决于您的项目的实际构建和运行方式。
我的问题是我有2 个 .NET Core App 项目,一个依赖于另一个(以便我可以从另一个应用程序执行该应用程序) 。 .NET Core 应用程序的问题是它们需要额外的文件才能工作(例如<assembly name>.deps.json
(这是罪魁祸首)和<assembly name>.runtimeconfig.json
)并且由于某种原因他们没有得到在构建时复制。
我所做的粗略解决方案是将复制命令添加到依赖项目的构建事件中
COPY "$(SolutionDir)<dependency project>\$(OutDir)<assembly name>.runtimeconfig.json" "$(SolutionDir)$(ProjectName)\$(OutDir)" /Y
COPY "$(SolutionDir)<dependency project>\$(OutDir)<assembly name>.deps.json" "$(SolutionDir)$(ProjectName)\$(OutDir)" /Y
但是手工复制它们也应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.