我的应用程序引用了一个版本大量增加的程序集。
我可以在Visual Studio对false
的引用中设置“特定版本”,这样我就不会遇到任何构建问题,但我需要能够在运行时使用任何版本。
据我所知,我有两种选择:
请求dll的发布者使用发布商政策文件并采用Assembly Binding Redirection。
使用Reflection
动态加载程序集。
现在,使用选项1,有可能无法说服装配供应商使用此技术。由于此程序集的发布数量,供应商在配置中会有很多大的重定向,因此我正在抢占这一点。
使用选项2,我宁愿不在此实例中使用Reflection,因为我想保持VS Intellisense带来的灵活性和易用性。
所以,我的问题是:是否存在第三种选择,或者我对前两种没有实际意义的选择表示担忧?
答案 0 :(得分:1)
选项2a:使用反射仅在发布版本中加载它。如果由于版本冲突而失败,则覆盖AssemblyResolve事件并手动加载程序集。
选项3:不要更改版本号。 (如果你想要一个内部版本号,请将它放在程序集信息的不同字段中,这样你就可以区分不同的构建,但如果公开的API没有改变,不要认为它是一个新版本)