nie wiem o żadnych narzędzi, aby to zrobić automatycznie dla Ciebie, ale Potrafię opisać kroki, które musi wykonać każde narzędzie (lub Ty).
Każdy zestaw zawiera manifest. Plik manifestu zawiera nazwy i wersje wszystkich innych zespołów, od których zależy bieżący montaż. W najprostszym przypadku musisz podążać tą ścieżką rekurencyjnie.
Nie ma prawidłowego sposobu podawania nazw plików z odniesionych złożeń. Odnośniki są przechowywane w manifeście jako nazwy zespołów (nazwa, wersja, kultura itp.), A nie jako nazwy plików. Gdy środowisko wykonawcze .NET musi załadować zestaw referencyjny, używa różnych wyszukiwań, aby go znaleźć, a wyniki tych wyszukiwań mogą różnić się w zależności od środowiska. Oczywiście, może to nie być problemem dla ciebie, jeśli szukasz tylko złożeń na twoim komputerze programistycznym, na przykład.
Techniki rozwiązywania odniesień do zespołów obejmują wyszukiwanie wszystkich złoonych zestawów, przeglądanie w pamięci podręcznej zespołu globalnego, wyszukiwanie w katalogu aplikacji, przekierowanie na podstawie plików konfiguracyjnych aplikacji lub zasad wydawcy i innych. Google dla artykułu "Jak środowisko wykonawcze lokalizuje zestawy" w witrynie MSDN, aby uzyskać więcej informacji. Ponadto aplikacja może zarejestrować się, aby wykonać własne rozwiązanie referencyjne, posługując się zdarzeniem System :: AppDomain :: AssemblyResolve.
Można łatwo napisać jedną z Assembly.GetReferencedAssembly(). Zacznij od EXE. Oczywiście będziesz musiał * znaleźć * pliki zespołu, które mogą stać się dość owłosione dzięki plikom .config i zasadom wydawcy. Powód, dla którego nie jest uniwersalnym narzędziem. –