【发布时间】:2019-05-19 07:10:21
【问题描述】:
我创建了一个需要第三方 API 的 C# 应用程序 (MyAppV1)。我的应用程序需要使用这个 API 的多个版本,但一次只能使用一个版本。 我已经设置了我的解决方案来更改不同构建配置的引用和使用语句,并且我创建了多个可执行文件每个都针对不同的 API 版本。
目前我有这种情况:
- MyAppV1_ThirdPartyV1.exe 使用 ThirdPartyV1.dll
- MyAppV1_ThirdPartyV2.exe 使用 ThirdPartyV2.dll
- MyAppV1_ThirdPartyV2_5.exe 使用 ThirdPartyV2.dll (他们没有改变 他们软件的次要版本的库名称)
- MyAppV1_ThirdPartyV3.exe 使用 ThirdPartyV3.dll
我希望能够维护一个版本列表,可能在 App.config 中,并在运行时加载适当的 dll 库。我不知道从哪里开始。这是一个合适的策略吗?我不确定如何最好地处理这种情况。我的应用程序的多个版本唯一与引用的库不同对我来说似乎很笨重。
我找到的大部分信息都与支持多个框架、同时处理下游同一库的两个版本的需求或需要同时加载两者有关。我找不到有关如何处理我的特殊情况的信息。
【问题讨论】:
-
您不能托管一个包含 3 个不同项目的解决方案吗?在我看来,你的努力不止加倍
-
这个帖子应该对stackoverflow.com/questions/18362368/…有帮助
-
第三方库的版本是否向后兼容(即,您可以使用较新的版本作为旧版本的替代品)。如果是这样,请查看配置文件中的 configuration/runtime/assemblyBinding/dependantAssembly/bindingRedirect。如果不是,我很高兴我不在你的鞋子里
-
如果你想发布一个 exe 并且用户可以根据需要换出 dll,那么你需要使用反射动态 dll 加载。如果不是,那么只需构建 3 个版本。动态 dll 加载不是类型安全的,而且很快就会变得丑陋
标签: c# dll assemblyversions