我有一个库X,它有一个使用组件Y的C类。 但是,Y在64位中不可用,因此它已被组件Z替换,但我仍希望在可用时使用Y.
所以我想引用Y和Z然后有
C.vb:
#If 32bit then
Class C
// implementation of C using Y
End Class
#End If
C64.vb
#If 64bit then
Public Class C
// implementation of C using Z
End Class
#End If
注意:由于突出显示vb注释错误而导致的C风格注释。
我认为问题在于,我将在64位版本中引用Y(它是一个COM对象,因此它将是一个互操作程序集,如果这有所不同)。假设没有从代码中的任何地方调用Y,我是否能够实例化C?
答案 0 :(得分:1)
你在几个级别上都没问题。 #if确保您的代码不使用Y中的任何类型,编译器实际上将从最终程序集中删除程序集引用。即使您在代码中确实引用了Y类型,它们实际上也可以进行JIT编译,因为 do 具有有效的元数据。你有互操作程序集。
您唯一不能做的是创建COM对象并调用其方法。您可以使用常规if而不是#if。允许您避免构建单独的程序集。测试IntPtr.Size是一种很好的方法,可以确定您是否在64位模式下运行。