J'ai un projet géré (ASP.NET, en fait) qui fait référence à un COM DLL. En ce moment, la référence dans le .csproj ressemble à ceci:
<COMReference Include="thenameinquestion"> <Guid>{someguidhere}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>0</VersionMinor> <Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> </COMReference>
4 Réponses :
Cet article montre comment faire activation de l'enregistrement des composants COM. Peut-être que cela aidera: http://msdn.microsoft.com/en-us /Library/ms973913.aspx P>
comme John Fisher a souligné déjà que vous recherchez COMT INTEROP GRATUITE . Il y a déjà beaucoup de questions à ce sujet, recherchez la «tag à la main» regfreecom et la balise étroitement liée sxs aussi. p>
Vous verrez facilement que cela peut être une arène délicate, notamment: P>
Résumer cela, j'aimerais souligner que "l'enregistrement-free Interop" peut être très utile et atténuer beaucoup de scénarios. Néanmoins, cela peut ne pas faciliter les choses ou même être possible pour votre scénario et votre environnement particulier (ASP.NET hébergé). P>
bonne chance, s'il vous plaît laissez-nous savoir si vous avez réussi! p>
On dirait que ce n'est pas possible - Visual Studio examinera uniquement le GUID mentionné dans la référence, cela ne se soucie pas du chemin qui y est allongé. P>
Nous avons eu un problème similaire avec notre serveur de construction quotidien - le client COM ne compilait pas si le serveur COM n'est enregistré. Nous avons juste ajouté l'enregistrement / la non-enregistrement à la séquence de construction - Compacteurs informatiques (REGSV32) (REGSV32), alors vs est exécuté à partir de la ligne de commande et immédiatement après l'achèvement de VS, il n'enregistre pas le composant (REGSVR32 -U). Fonctionne bien. P>
Lorsque vous référence à une COM DLL, Visual Studio génère automatiquement un ensemble Interop pour celui-ci. Je trouve que la prise de contrôle manuel de ce processus est un excellent moyen de découpler les bâtiments COM et .NET. P>
tlbimp.exe code>. Voir MSDN pour les paramètres de ligne de commande. < / li>
- Référencez votre assemblage Interop dans le projet .NET au lieu de em> la DLL COM. LI>
ol>
Une fois que vous faites cela, vous n'avez plus besoin que la COM dll enregistrée sur la machine lorsque vous construisez la solution .NET, seule votre assemblage interop est requis. P>
L'assemblage interop peut s'asseoir dans un dossier inchangé pour toujours jusqu'à ce que (a) la COM dll brise la compatibilité binaire, ou (b) une modification de l'interface COM est effectuée que le code .NET utilise réellement. P>
Si vous avez des versions différentes du COM DLL qui sont toutes compatibles binaires, compilez ensuite l'assemblage Interop contre la version la plus ancienne contenant les interfaces requises par le code .NET. Vous n'aurez alors pas à mettre à jour l'assemblage Interop pour différentes versions. P>
En outre, vous n'avez pas besoin d'inclure la DLL COM dans votre installateur si vous êtes en mesure de supposer que le COM DLL sera déjà installé sur la machine cible. P>