我的应用程序包含对外部库(SQL Server管理对象)的引用。显然,如果在运行时系统上不存在该库,则只要不调用使用此库的类的方法,应用程序仍然可以正常工作。
问题1:这是指定的行为还是CLR加载库的(幸运的)副作用?
要检测引用是否可访问,我目前使用以下代码:
Function IsLibraryAvailable() As Boolean
Try
TestMethod()
Catch ex As FileNotFoundException
Return False
End Try
Return True
End Function
Sub TestMethod()
Dim srv As New Smo.Server() ' Try to create an object in the library
End Sub
它能工作,但看起来相当丑陋。请注意,只有在TestMethod是一个单独的方法时才能正常工作,否则异常将在IsLibraryAvailable
的开始处抛出(即使对象实例化发生在try-catch块内)。
问题2:有更好的替代方案吗?
特别是我担心像函数内联这样的优化会使我的代码停止工作。