Prima di tutto, a differenza di un compilatore C++ oi molti altri compilatori in grado di leggere le librerie dei tipi, né il CLR né compilatori .NET effettivamente letto una libreria di tipi. Entrambi dipendono da una libreria di interoperabilità , un assembly .NET generato da una libreria di tipi. Contiene solo dichiarazioni, decompilate dal tlb, in un formato comprensibile sia al CLR che ai compilatori.
Lo strumento principale che fa questo è Tlbimp.exe, l'importatore libreria dei tipi.
esecuzione Tlbimp.exe non è un requisito difficile, anche se ci si pensa di fare questo su un server di build. L'IDE supporta anche la navigazione delle librerie dei tipi registrati dalla finestra di dialogo Aggiungi riferimento. L'elemento che viene aggiunto al progetto contiene la chiave del Registro di sistema, non il nome della libreria dei tipi. L'attività MSBuild <ResolveComReference>
genera l'assembly di interoperabilità dalle informazioni di registro.
Il principale vantaggio di questa operazione è che ora è facile per l'auto-generare le voci manifesto in modo che il server COM può essere utilizzato senza essere registrati. Aka "COM reg-free". Le informazioni del registro sono richieste per fornire le voci manifest. Attivato semplicemente impostando la proprietà Isolated su True per il riferimento. Molto desiderabile.
fonte
2014-07-14 22:16:29
Non sono sicuro che qualsiasi vecchia applicazione C++ possa eseguire una DLL COM senza registrazione; sembra essere l'antitesi della stessa COM. Forse quell'applicazione utilizza direttamente la funzionalità fornita da quella DLL, senza passare attraverso l'intermediario del server COM. – antiduh
avviso @antiduh Chiedo solo informazioni sulla compilazione, non in esecuzione. – TCS
Da .NET, puoi fare riferimento al TLB, perché dici che deve essere registrato? –