Читают то место, где список пакетов записан, и по .NET оно надёжнее, чем в большинстве языков. У современных проектов ссылки на пакеты хранятся прямо в файлах проекта, а при включённой блокировке версий — ещё и в отдельном файле, который закрепляет точный набор вместе с косвенными зависимостями. У старых проектов на .NET Framework их ищут в отдельном файле packages.config рядом с проектом.
Если исходников нет, состав определяют по самой программе: подключённые сборки видны в её служебных сведениях, а у многих пакетов узнаваемые имена и номера версий. Метод рабочий, но не исчерпывающий, и эксперт разделяет опознанное надёжно и предположительно.
Условия использования изложены в сопровождающем пакет лицензионном документе — MIT, Apache, BSD, GPL, LGPL и других; встречаются и коммерческие библиотеки. Эксперт устанавливает, какой пакет какой версии подключён и каким документом сопровождается, и приводит его текст; толкование условий — за судом.