nuget - 使用 VS2019、.Net 5.0、Winforms.Wasm 1.0.19137.60 Nuget 包 - 产生未处理的 Mono.Cecil.AssemblyResolutionExceptions
问题描述
我正在尝试使用 VS 2019 将在 .Net 4.5.2 下开发的 6 个类库移植到 .Net 5.00。我选择 .Net 5.00(和 VS 2019)作为我的最终目标是将解决方案作为 Web 程序集提供。我已将每个库的目标框架设置为 .NET 5.0。
我的一个类库使用 Winforms,因此我已将 Roozbeh Gh 的 Nuget 包 Winforms.Wasm (1.0.191137.60) 下载到 VS 2019 中。
在构建时,我最初得到了错误:
1>C:\Users\howar_000\.nuget\packages\winforms.wasm\1.0.19137.60\build\netstandard2.0\Winforms.Wasm.targets(13,5): error :
Unhandled Exception: Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Windows.Forms, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
... at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
... at Driver.Import(String ra, AssemblyKind kind)
... at Driver.Run(String[] args)
... at Driver.Main(String[] args)
我能够通过添加以下内容来解决这个问题:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
根据我在 Roozbeh Gh 推荐的 Winforms.Wasm GIT 存储库中找到的说明。
1>C:\Users\howar_000\.nuget\packages\winforms.wasm\1.0.19137.60\build\netstandard2.0\Winforms.Wasm.targets(13,5): error :
Unhandled Exception: Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Formats.Asn1, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 1>C:\Users\howar_000\.nuget\packages\winforms.wasm\1.0.19137.60\build\netstandard2.0\Winforms.Wasm.targets(13,5): error : at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
... at Driver.Import(String ra, AssemblyKind kind)
... at Driver.Import(String ra, AssemblyKind kind)
... at Driver.Import(String ra, AssemblyKind kind)
... at Driver.Import(String ra, AssemblyKind kind)
... at Driver.Run(String[] args)
即,它只是将问题转移到与 Winforms.Wasm 一起分发的另一个库。我也尝试过明确排除 System.Formats.Asn.dll 的 Nuget 版本,但这也不起作用。
我意识到问题在于 Nuget Winforms.Wasm 包包含 netstardard2.0 库,因此包下载是一个完整的独立发行版。此外,VS 2019 MSBuild 正在识别与 dotnet net5.0 发行版的冲突。
我做了很多调查试图解决这个问题 - 甚至覆盖 C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Formats.Asn1.dll使用
C:\Users\howar_000.nuget\packages\system.formats.asn1\5.0.0\lib\netstandard2.0\System.Formats.Asn1.dll 反之亦然,但无济于事。
但是通过阅读网络上的大量文献,我意识到这是一个反复出现的问题,一段时间以来一直困扰着尝试将 VS 与 .Net 和 Nuget 包一起使用的开发人员。当然,要么微软需要更改 VS MSBuild 的实现以适应 Nuget 包,要么 Nuget 包编写者需要提出一个符合 VS 的发行版——而不是让开发人员花费大量时间来尝试建立变通方案并了解 VS MSBuild 的内部工作。
我正在考虑从 VS 2019 转移到使用 Mono Developer 工具包——我会告诉你我是怎么做的。
任何有关如何最好地将使用 Nuget 包的 .Net 4.5.2 程序集迁移到等效 Web 程序集的帮助/建议将不胜感激。
解决方案
推荐阅读
- javascript - HTML5 Web SQL 数据库 API 相对路径
- python - 在 Python 多处理中,当子进程将数据写入队列并且没有人读取它时,子进程不会退出。为什么
- javascript - Kubernetes 替换部署失败
- python - Drill 无法读取 Spark 生成的 Parquet 中的大部分列
- macos - MacOS Mojave:检查存档器 (ar) 界面时,./configure 脚本失败
- javascript - 缩放图像时是否可以禁用滑动功能?
- laravel - 从 Laravel 的相关模型中获取字段?
- javascript - reactjs通过道具将对象数组从父状态传递给子状态
- elasticsearch - 处理同一搜索字符串上的精确搜索和部分搜索
- python - 为什么(Kivy)下拉菜单不显示?