Eine technisch saubere Lösung wäre zuerst eine Schnittstelle zu definieren.
Fachbegriff:
contract first design
In der Praxis sind es dann meist mehrere unterschiedliche Schnittstellen, weil die Hauptanwendung über eine Schnittstellen die externe Software benützt aber auch die externe Software über weitere Schnittstelle(n) Teile der Hauptanwendung benützt.
Das externe Entwicklerteam bekommt dann nur die Schnittstellen und die Anwendung (als Exe).
Man müsste auch mal prüfen, ob das externe Team euer Framework wirklich braucht
oder ob es nicht möglich wäre der ext. Software von Aussen alle notwendigen Daten zu übergeben.
Stichwort:
Dependency Injection