我有一个依赖于外部程序的项目,这个外部程序有一个API,实际上它有大约17种不同的API,对于2000-2017版本都略有不同。现在在这17个版本中,我想支持其中的5个版本。 (2012-2017)但是,2012年有几个功能在2017年重新命名。
现在好消息是,我可以轻松确定给定用户使用的程序版本,并且可以使用对不同版本API的引用来调用任何共享函数(90%+)。但是我需要其余10%的功能。所以我需要包含对多个API的引用,以便我的程序将编译,然后在运行时选择它接收的版本。
现在我尝试进入visual studio(2015社区版),并添加对其中几个的引用。但是,当我尝试添加第二个引用时,我收到一条错误消息:a reference to [API.dll] could not be added a reference to the component [API.dll] already exists in project.
。
我希望方法的使用是这样的:如果一个版本中存在一个具有给定名称的函数,它应该绑定到那个,如果给定的函数名存在于多个API中,那么它应该绑定到最新的。知道怎么做吗?也许使用extern别名关键字的东西? 我查看How to reference two versions of an API?并且接受的答案不起作用,但第二个答案可能是,任何人都能够解释是否有人能够解决这个问题,如果有的话怎么做呢?
答案 0 :(得分:2)
基本上,不允许添加多个具有相同名称的引用。
如果您是程序集所有者,则必须更改清单中的文件名以生成具有不同名称的DLL。
您还可以在配置文件或 load at runtime中管理程序集版本。
我的建议是将所有DLL合并到一个文件中。您可以使用ILMerge执行此操作。