如果不使用,我可以使用引用不可用程序集的库吗?

时间:2010-09-20 09:01:00

标签: .net 64-bit

我有一个库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?

1 个答案:

答案 0 :(得分:1)

你在几个级别上都没问题。 #if确保您的代码不使用Y中的任何类型,编译器实际上将从最终程序集中删除程序集引用。即使您在代码中确实引用了Y类型,它们实际上也可以进行JIT编译,因为 do 具有有效的元数据。你有互操作程序集。

您唯一不能做的是创建COM对象并调用其方法。您可以使用常规if而不是#if。允许您避免构建单独的程序集。测试IntPtr.Size是一种很好的方法,可以确定您是否在64位模式下运行。