Мое приложение содержит ссылки на внешнюю библиотеку (объекты управления 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, даже если создание экземпляра объекта происходит в блоке try-catch).
Вопрос 2: есть ли лучшая альтернатива?
В частности, я боюсь, что такие оптимизации, как встраивание функций, могут помешать моему коду работать.