Поскольку вы знаете, что это гарантированно будет в GAC, вы можете перечислить результаты gacutil /l
. Это даст вам список каждой сборки в GAC.
С этого момента вы можете запустить цикл, который выполняет следующее:
foreach assemblyName in list
Create new AppDomain
Load assembly into new appdomain
check for type in assembly
if exists:
return assemblyName to main appDomain
Unload appdomain
Важно сделать это в отдельном домене приложений, иначе вы будете постоянно загружать все эти сборки в свою программу.
Обратите внимание, что это будет очень, очень медленно, и не совсем то, что я бы порекомендовал. Как только вы знаете правильное имя типа, вам, скорее всего, следует сохранить его в настройках приложения для будущих загрузок.
Edit:
Как указывает Ганс, для использования Gacutil требуется установка .NET SDK. Если это недопустимый параметр, вы можете использовать C ++ / CLI, чтобы сделать доступным API .NET для извлечения информации из GAC. Существует собственный API для доступа к информации GAC , но это не управляемый API.