能否在.NET Framework 4中使用源生成器?StrongInject兼容问题咨询

问题原因
NuGet的包兼容性校验会扫描包内所有组件的目标框架,Package StrongInject 1.2.1 is not compatible with net40报错的本质原因如下:
- StrongInject 1.2.1除了面向netstandard2.0的源生成器、Roslyn分析器组件外,它附带的运行时核心依赖库最低仅支持.NET Framework 4.5及以上版本,不兼容.NET Framework 4.0
- 你自行开发的Roslyn分析器包仅包含源生成器、分析器组件,没有额外的高版本运行时程序集,因此不会触发兼容性校验失败,和当前报错场景不存在冲突。
可行解决方案
- 方案一(推荐):将项目目标框架升级到.NET Framework 4.5及以上版本。.NET 4.0早已停止官方支持,升级到4.8版本几乎不会带来业务代码兼容性问题,同时可兼容绝大多数新发布的NuGet包。
- 方案二(仅当必须保留.NET 4.0时使用):手动剥离StrongInject包内的源生成器组件,同时自行移植其运行时代码适配.NET 4.0框架,该方案需要修改StrongInject源码,后续版本迭代的维护成本较高。
内容的提问来源于stack exchange,提问作者Serg046
相关产品推荐
相关产品推荐

