0

我正在 Visual Studio 2010 / .NET 4 中开发一个小程序(一个 dll),它通过 COM 互操作与外部应用程序(我们称之为 ExApp)集成。我自己使用 生成互操作程序集TlbImp.exe,因为外部应用程序没有提供任何程序集。ExApp 提供三个流行版本,每个版本都有一个实际上相同的 API,但每个版本都有不同(且不兼容)生成的互操作 dll。目前,这意味着我有三个独立的安装程序:

  • 带有my.dll内置/链接到Interop.ExApp.dllv1的安装程序
  • 带有my.dll内置/链接到Interop.ExApp.dllv2的安装程序
  • 带有my.dll内置/链接到Interop.ExApp.dllv3的安装程序

一定有比这更好的解决方案。

如何配置 Visual Studio / Windows Installer 以便我只需要一个安装 .exe?这意味着安装程序会检测 ExApp 的版本,并安装相应版本的my.dllInterop.ExApp.dll

还有一个额外的问题:由于 ExApp API 没有发生有意义的变化,我如何编译一个版本my.dll来使用任何已安装的 ExApp 版本?

4

2 回答 2

1

在您的项目参考中,dll 是Specific Version设置为 True 还是 False?如果设置为 True,您可以尝试将其设置为 False。

这显然不会阻止新版本的破坏(API 更改),但无论如何目前似乎都是这种情况

于 2012-01-24T23:55:10.413 回答
1

为什么不使用 3 个不同的文件名构建互操作,然后在应用程序中创建工厂模式来决定在运行时使用哪个提供程序?

我可以向您展示搜索系统以安装 3 个互斥文件之一的方法,但我认为安装程序不属于这种复杂性。如果有人升级了您正在为其创建互操作的应用程序,它无论如何都会崩溃。

于 2012-01-25T13:29:55.400 回答