Pytanie w sprawie .net – Sprawdzanie zewnętrznych zależności w vb.net

1

Coś, czego nigdy wcześniej naprawdę nie robiłem, ale jaki jest najlepszy sposób, aby upewnić się, że dostępne są wszystkie zewnętrzne zestawy / dll, które są używane przez moją aplikację, i prawdopodobnie poprawna wersja.

Napisałem aplikację, która opiera się na System.Data.SQLite.dll, poszedłem przetestować ją na komputerze, na którym brakowało biblioteki DLL, a moja aplikacja po prostu wyrzuciła wyjątek czasu wykonywania, ponieważ dll brakowało. Jak mogę złapać ten błąd?

Twoja odpowiedź

4   odpowiedź
1

ponieważ jest to głównie mój instynkt instynktowny i prawdopodobnie przegapiłem jakiś kluczowy krok tam)

Krótka odpowiedź: Zasadniczo dobrym pomysłem jest wdrażanie zależności wraz z aplikacją przy użyciu instalatora. Bez nich, jak zauważyliście, istnieje bardzo mała szansa na działanie aplikacji.

Długa odpowiedź: Ok, powiedz, że maszdodatkowy funkcjonalność, którą chcesz zapewnić, jeśli coś innego jest zainstalowane na komputerze docelowym. Oto kilka ogólnych wskazówek, aby to zrobić:

Dla każdego typu, który ma pole, właściwość, zdarzenie, parametr lub wartość zwracaną, która odwołuje się do typu zdefiniowanego w ewentualnie odinstalowanym zespole: musi być opakowany w interfejs i zastąpić wszystkie inne pola, parametry, wartości zwracane lub lokalne deklaracje zmiennych do korzystania z interfejsu.

Za każdym razem, gdy chcesz zbudować jedną z wcześniej zapakowanych klas, musisz użyćSystem.Activator.CreateInstance i zapakuj go w filtrowanie try / catch na 7 różnych typach wyjątków:

FileNotFoundExceptionFileLoadExceptionBadImageFormatExceptionTypeLoadExceptionMissingMethodExceptionMissingMemberExceptionMissingFieldException

Jeśli jeden z nich zostanie złapany, musisz albo dostarczyć alternatywną implementację wcześniej utworzonego interfejsu, albo napisać kod, aby sprawdzał null za każdym razem, gdy odwołuje się do tego obiektu.

Dzięki za to wyjaśnienie, nie używaj przykładowego kodu dostarczonego przez Josha, ale ta informacja jest bardzo pomocna beakersoft
0


Lub jeśli chcesz wysłać / zlokalizować swoje własne zespoły, możesz spróbować przesłonić sondowanie zespołu:Połączyć.

1

co chcesz zrobić, to użyć refleksji, aby sprawdzić i sprawdzić, czy zespół można załadować do pamięci. Zawiń go w bloku try..catch i obsłuż wszystkie wyjątki, które z niego pochodzą.

Try
    Assembly.Load("System.Data.SQLite, Version=1.0.22.0, Culture=neutral, PublicKeyken=DB937BC2D44FF139");
Catch ex As FileNotFoundException
    //do something here
End Try
0

aby zbudować instalator dla swojej aplikacji. To przeanalizowałoby wszystkie statyczne zależności i stworzyło instalator, który zapewni, że maszyna docelowa otrzyma wszystko, czego potrzebuje.

Powiązane pytania