在Windows 32位或64位下使用VS2010。我们的C#应用程序调用一个第三方DLL(托管),该DLL与非托管DLL进行接口交互。第三方DLL API在32位或64位下看起来相同,尽管底层链接到32位或64位的非托管DLL。
我们希望我们的C#应用程序能在32位或64位操作系统上运行,最好能自动检测操作系统并通过一个简单的工厂类加载适当的32位第三方DLL - 通过测试环境。因此,最简洁的解决方案将是包含以下内容的运行时文件夹: OurApp.exe 3rdParty32.DLL 3rdPartyUnmanaged32.DLL 3rdParty64.DLL 3rdPartyUnmanaged64.DLL
然而,托管的第三方32位和64位dll的接口是相同的,因此不能在同一VS2010项目中引用两个dll:添加第二个时会显示警告三角形,并且不会被引用。
我的唯一答案是创建两个额外的库DLL项目来引用第三方32位和64位Dll吗?所以我最终会得到这个项目安排: Project 1: Builds OurApp.exe, dynamically creates an object for project2 or project3. Project 2: Builds OurApp32.DLL which references 3rdParty32.dll Project 3: Builds OurApp64.DLL which references 3rdParty64.dll
我们希望我们的C#应用程序能在32位或64位操作系统上运行,最好能自动检测操作系统并通过一个简单的工厂类加载适当的32位第三方DLL - 通过测试环境。因此,最简洁的解决方案将是包含以下内容的运行时文件夹: OurApp.exe 3rdParty32.DLL 3rdPartyUnmanaged32.DLL 3rdParty64.DLL 3rdPartyUnmanaged64.DLL
然而,托管的第三方32位和64位dll的接口是相同的,因此不能在同一VS2010项目中引用两个dll:添加第二个时会显示警告三角形,并且不会被引用。
我的唯一答案是创建两个额外的库DLL项目来引用第三方32位和64位Dll吗?所以我最终会得到这个项目安排: Project 1: Builds OurApp.exe, dynamically creates an object for project2 or project3. Project 2: Builds OurApp32.DLL which references 3rdParty32.dll Project 3: Builds OurApp64.DLL which references 3rdParty64.dll