la dépendance à l'assembly signé qui fait référence à un DLL COM doit avoir assembly interop de la dépendance générée référence

StackOverflow https://stackoverflow.com/questions/1843529

Question

Désolé pour le mauvais titre.

J'ai un ensemble signé « Signed.dll » qui est une dépendance d'un autre ensemble, disons Executable.exe.

Signed.dll références DLL COM et expose publiquement l'un des types de cette COM DLL: 'ComPublicT'

Executable.exe doit faire référence au Interop.COM.dll généré automatiquement à partir du projet Signé, plutôt que d'ajouter une référence à la DLL COM d'origine.

L'erreur est une incompatibilité de type entre deux différents types de ComPublicT de deux ensembles différents d'interopérabilité COM.

Ceci est nécessaire uniquement si Signed.dll est signé.

Autre que la création d'un type qui imite ComPublicT, comment puis-je permettre Executable de référencer la DLL COM plutôt que l'assembly COM est signé?

Pourquoi cela?

Modifier, Voici une répartition quelque peu différente:

Signé Références de projets COM.dll, et expose publiquement un type de la COM.dll L'ajout de cette référence dans Visual Studio crée automatiquement Interop.COM.dll

références Executable et dépend du projet signé Normalement, vous pouvez ajouter une référence à COM.dll et tout va bien.

Comme signé est signé, le type Interop.COM.dll exposé publiquement de ne se voit pas signé par le compilateur comme le même que le type exposé de Interop.COM.dll de publiquement Executable

Executable doit faire référence signé à la main Interop.COM.dll de qui se sent fragile.

Était-ce utile?

La solution

  1. Chaque assemblage référencé par un ensemble signé doit également être signé.

  2. Normalement, il y a une signature Assemblée interop primaire (PIA) fournies par l'auteur de la DLL COM. Il devrait être le seul ensemble Interop pour ses types COM parents référencés par une assembly .NET. http://msdn.microsoft.com/en-us/library/aax7sdch. ASPX Il n'y a pas PIA disponible dans mon cas.

Les deux ensembles de Interop générés par Visual Studio pour mes deux projets diffèrent en ce que un ensemble interop est signé, et l'autre est non signé.

Ainsi, les types contenus dans les assemblées Interop diffèrent.

Une solution consiste à générer un ensemble de Interop unique signé qui est référencé par les deux projets.

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