【发布时间】:2021-03-21 10:27:58
【问题描述】:
我正在将多项目 .NET 4.6 解决方案迁移到 .NET Core 5.02。 .csproj 文件已手动迁移using these instructions。该解决方案创建 DLL,这些 DLL 是另一个应用程序的插件;该应用程序在运行时加载 DLL。该解决方案创建的 DLL 在我的开发 PC 上运行良好(当然)。在 Windows Sandbox 中将这些插件安装到应用程序的原始副本中时,其中一个 DLL 失败并出现错误:
Could not load file or assembly 'System.Drawing.Common, Version=5.0.0.2,
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the
file specified.
这会阻止加载该 DLL。引用 Microsoft.Windows.Compatibility 的不同 DLL 加载正常,但它没有对 System.Drawing 的引用。 在运行时失败的项目将 System.Drawing 安装为包引用(无 packages.config)。同样,它可以在开发 PC 上正确编译和运行。
我试过了:
- 从 NuGet 卸载 System.Drawing,从 NuGet 再次获取它并在解决方案中重新安装它
- 在项目中使用
Update-Package -reinstall导致没有引用需要重新安装、关闭和重新打开 VS2019 ;) - 在项目中使用了 Publish,但只得到了一个 .nupkg 而不是 DLL 和依赖项。
我不允许发布图片(新用户),否则我会在 .csproj 中包含依赖关系树和项目引用的图片。有没有人有什么建议?谢谢。
【问题讨论】:
-
如果安装
System.Drawing.Common包会怎样?另一件要考虑的事情是,如果您安装了不同版本的 nuget(到您的库和您的应用程序)。 -
感谢您的建议。最后,我认为问题出在 NuGet 和 VS 2019 上。在删除包引用并将其重新添加了几次之后,在重新启动 VS 2019 之间,一切都突然起作用了。在失败的版本中,VS 2019 中仅列出了 dll。现在 System.Drawing.Common 下有 2 个子树。有趣的是,DLL 是 .NET 4.6;我猜所有其他的东西都使它与 net core 5 兼容。再次感谢。