我想使用两个不同版本的相同库(OpenCVSharp 2.x和OpenCVSharp 3.x) 好吧,我将这两个软件包下载到单独的项目中(让我们称之为OCV2Wrapper和OCV3Wrapper)并在我的项目中引用两个包装器。我不得不从一个包(2.x)重命名库并手动引用它们,因为:Can we add 2 different versions of same package in NuGet。我读到了外部别名,我在其中一个包装器中使用了外部别名(在我的情况下为2.x)。 但我有一些重大问题:
C#中此方案的正确方法是什么?
我想在解决方案中使用两个包装器,因为2.x版本包含算法(SIFT和SURF),而3.x版本包含算法(Kaze和AKaze)。 我可以认为这两个软件包都是nuget,但我更喜欢3.x来自nuget,2.x版本是手动配置的。
答案 0 :(得分:11)
如前所述,引用2个不同版本的块包没有任何问题,只要它在不同的Visual Studio项目中就可以进行这些引用。
但这也是容易部分结束的地方,但我认为还有一些选择。根据您的需要,我会看到以下选项。
希望这有点帮助,所以下次你不必修改第三方源代码。
答案 1 :(得分:1)
好的,我通过下载2.X包装版的整个源代码来解决这个问题。 将其名称空间重命名为ABCDEF2,其中ABCDEF是原始名称空间。使用我自己的密钥构建我自己的nuget包并将其发布到我们的私有nuget服务器。 这是一个非常蹩脚的解决方案,但除了手动下载原始软件包并使用不同的文件名等直接引用它之外别无其他方法,您可以放弃nuget的优势。