Καταρχήν, όταν φτιάχνεις ένα assembly δεν επιλέγεις με ποιό exe θα τρέξει. Απλά φτιάχνεις τη βιβλιοθήκη. Μετά, στο project το οποίο θέλεις να τη χρησιμοποιήσεις προσθέτεις το κατάλληλο reference. Assemblies μπορείς να έχεις μέσα σε αρχεία με κατάληξη dll ή exe, χωρίς αυτό να επηρεάζει το πως θα προσθέσεις το reference.
Το project της Delphi 7 είναι .NET ή Native? Αν είναι .NET δεν θα πρέπει να έχεις κανένα πρόβλημα να προσθέσεις ένα assembly, σε όποια γλώσσα και να έχει φτιαχτεί. Μην ρωτάς όμως πως να το κάνεις αυτό σε Delphi 7, δεν έχω ιδέα που μπορεί να βρει κανείς πλέον τόσο παλιά έκδοση.
Αν το project είναι managed, τα πράγματα δυσκολεύουν. Ο ευκολότερος τρόπος είναι να δεις το assembly μέσω .COM Interop. Ουσιαστικά, κάνεις register το assembly με το regasm.exe και μετά το βλέπεις από τη Delphi σα να είναι άλλο ένα COM dll. Αυτό θα σου βάλει αρκετούς περιορισμούς καθώς δεν θα μπορείς να καλέσεις κώδικα που δεν έχει αντίστοιχο σε COM (π.χ. generics).
Για όλα αυτά θα πρέπει (όπως πάντα) να διαβάσεις το documentation, το κεφάλαιο Interoperating with Unmanaged Code και πιο συγκεκριμένα το Exposing .NET Framework Components to COM. Το COM interop δεν είναι δύσκολο αλλά δεν είναι και τσάμπα, ειδικά όταν χρησιμοποιείς παλιά IDE.
Να κάνω και μιά γενική παρατήρηση. Η Delphi 7 είναι πολύ παλιά. Ίσως θα έπρεπε να σκεφτείς να ξαναγράψεις το exe σου σε C# παρά να προσπαθείς κάθε φορά να ταιριάξεις .NET και Delphi κώδικα, χάνοντας πολλά από τα πλεονεκτήματα που σου δίνουν οι διάφορες βιβλιοθήκες στο .NET όπως π.χ. τα Validators του Enterprise Library, το ADO.NET ή το LINQ. Όχι ότι δεν μπορείς να τα χρησιμοποιήσεις μέσα στα .NET assemblies σου, δεν θα μπορείς όμως να τα χρησιμοποιήσεις στο exe σου.
Αν δεν μπορείς να αλλάξεις το exe επειδή πρόκειται π.χ. για μία legacy εφαρμογή η οποία θα είναι δύσκολο να ξαναγραφτεί, σκέψου να περάσεις σε μία πρόσφατη έκδοση της Delphi. Έχουν βγει αρκετές εκδόσεις μετά την 7 οι οποίες θα έχουν λιγότερα προβλήματα στη συνεργασία με το .NET.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos