我有一个包含多个项目和内部NuGet包的庞大解决方案,广泛依赖于Unity 4.0.1。 我们正在评估将此解决方案迁移到Unity 5.11.1以提高性能并解决源自Unity项目在5.0.0版本中已删除的代码的随机DI相关崩溃。
在寻找从外部到内部缓解迁移的方法时,开发了两个工具:
- 基于Roslyn的源代码转换器
- 一种实现Unity 5接口的桥梁,但实际上透明地将调用映射到包装的Unity 4容器接口
这两个工具都通过了单元测试,转换器成功转换了一个关键的“叶子”项目,但是,在尝试从一个内部项目引用迁移后的叶子项目时,我们遇到了一个难题:臭名昭著的NU1605。
我完全可以理解NU106错误是合理的,因为内部项目仍然引用Unity 4.0.1,而叶子项目引用Unity 5.11.1。 然而,这是工具阻碍我们的一种情况:我需要两个版本“共存”,因为我正在手动处理它们之间的不一致性。
从理论上来说,这应该是可行的,因为DLL文件有不同的版本,甚至名称空间也不同。
有没有什么方法可以“强制”NuGet接受这种奇怪的设置呢?