Question

J'ai 2 .NET DLL que j'expose à com en utilisant le régasme. Afin de simplifier la référence au sein d'un client COM, je voudrais en faire un seul fichier.

J'ai essayé de convertir les deux fichiers en IDL, puis de copier le contenu de la section de la bibliothèque de l'un en l'autre, puis de compiler à .tlb avec midl. Cela fonctionne bien pour les typedes de type dans le deuxième IDL, mais il semble échouer en ce qui concerne les interfaces dans lesquelles j'ai copié. Ole / com Viewer peut voir les définitions d'interface, mais lorsque j'essaie d'utiliser le TLB via com, il ne peut pas trouver les interfaces qui J'ai copié.

Je voulais m'assurer avant de passer trop de temps à ce sujet, qu'il est en fait possible de maigre IDL de cette manière.

Était-ce utile?

La solution 3

Ok, il s'avère donc que les problèmes que je ressentais n'étaient pas liés à la fusion des IDL.

Si vous souhaitez fusionner les IDL, vous pouvez le faire en copiant simplement le contenu d'une section de bibliothèque dans un IDL dans un autre. Ensuite, exécutez Midl sur le fichier fusionné pour le transformer en TLB.

Autres conseils

Pourriez-vous utiliser ILmerge Pour combiner d'abord les assemblages .NET, puis utiliser du régasme sur l'assemblage résultant?

Ilmerge est un utilitaire pour fusionner plusieurs assemblages .NET en un seul assemblage .NET. Il fonctionne sur les exécutables et les DLL et est livré avec plusieurs options pour contrôler le traitement et le format de la sortie.

Je ne vois pas de manière évidente, cela échouerait. Vous avez dit que vous aviez fusionné les sections de la bibliothèque, mais vous n'avez pas dit que vous copiez les déclarations d'interface de l'autre .idl. Ce serait une explication évidente, mais peu probable.

Un mode de défaillance est lorsque l'application client utilise la bibliothèque de types pour rassembler les pointeurs d'interface à travers les limites de l'appartement ou hors de processus. Cela nécessite cependant des clés de registre dans les interfaces HKCR . .NET ne les crée pas, vous devez le faire vous-même. Vous sauriez si vous l'avez fait, pas beaucoup d'explications non plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top