我有一个可以在32位或64位.dll下载的第三方库。我的开发机器运行的是32位Windows 7.我的目标生产机器运行的是64位Windows Server 2008 R2。我的项目解决方案目前正在以任何CPU模式构建。
有没有一种优雅的方法来处理这种情况,而不必有重复的项目(MyProject32和MyProject64,每个都引用适当的32或64位版本的第三方库)?
我想到的第一个解决方案是挂钩AppDomain.AssemblyResolve
event,并将我的第三方库放在他们自己的32位和64位子文件夹中。然后,我将根据当前模式动态加载适当的程序集。
我想到的第二个解决方案是仅在32位模式下构建,并且只使用32位第三方库(这对我来说似乎是个问题......)。
这两种解决方案都让我觉得特别干净......任何建议都会有所帮助!
答案 0 :(得分:1)
如果这是一个内部程序,那么我没有看到问题。在开发计算机上安装32位DLL,并在生产计算机上安装64位DLL。不要在错误的机器上安装错误的DLL。使用内部应用程序,机器上错误的DLL的问题几乎等同于根本没有DLL。
如果这是您要分发的应用程序,或者您不能依赖于在正确位置具有正确DLL的计算机,那么您的第一个解决方案听起来很合理:找出适合当前运行时的DLL环境,并加载它。或者,如果无法加载,则显示错误消息,指出问题所在。