2010-07-21 23 views
0

Je tente de déployer une DLL d'interopérabilité COM .NET pour une application Web. Au cours du développement, pour l'assembly qui doit s'enregistrer pour l'interopérabilité COM, l'option "Register for COM interop" est cochée sous les propriétés de génération. Dans cette méthode, tout fonctionne très bien.L'enregistrement d'une DLL d'interopérabilité COM .NET fonctionne à partir de la construction du projet mais pas à partir de regasm

Cependant, lorsque je déploie l'application ASP.NET et que j'essaie d'enregistrer manuellement l'assembly à l'aide de l'outil regasm, cela ne fonctionne pas. :(

Mon objectif final est le suivant:.

Une fois que l'utilisateur arrive sur le site et ne pas l'objet enregistré, l'utilisateur peut enregistrer le dll en utilisant ClickOnce Par la suite, l'utilisateur ne doit pas s'invité à entrer quoi que ce soit et tout devrait fonctionner!

Nous vous remercions à l'avance.

Répondre

2

, une application Web qui tente d'installer une DLL COM sur la machine cliente va faire face à de nombreux obstacles de sécurité. Il est possible pour un utilisateur sans privilèges administrateur d'installer le code .NET (y compris les classes COM-visible) via ClickOnce, mais je pense que vous pourriez trouver que même cela ne réalise pas ce que vous voulez ...

Les installations ClickOnce sont déployées sur un emplacement obscur sous la section de profil de l'utilisateur du système de fichiers. Tous les composants COM dans l'application déployée sont visibles dans l'application, mais ne sont pas visibles ailleurs sur l'ordinateur client. En particulier, le script client exécuté dans un navigateur ne pourra pas appeler les composants COM déployés via ClickOnce.

Le déploiement de ClickOnce conserve délibérément le code déployé séparément du reste du système.

Je ne vois aucun moyen pour que votre application Web se déploie et interagisse avec une DLL COM, à moins que l'utilisateur ne dispose de privilèges d'administrateur et n'enregistre explicitement la DLL. En général, je pense que c'est une bonne chose. Quelqu'un d'autre pourrait avoir une meilleure suggestion, mais la seule façon de progresser est de construire la fonctionnalité qui utilise cette DLL dans une application .NET qui s'exécute sur le bureau. Cela pourrait être déployé via ClickOnce, et invoqué via un lien dans votre application web. Il pourrait même publier des données sur votre serveur Web. Mais je ne vois pas de moyen d'interagir avec le navigateur.

+0

Merci monsieur! Votre perception et vos connaissances m'ont aidé à trouver ma voie vers la solution. – Sai

1

ne peut pas vous aider avec les choses ClickOnce, mais pourrait-il que vous devez utiliser l'option/codebase pour regasm (si vous n'êtes pas l'installer dans le GAC), par exemple

regasm AssemblyName.dll /codebase 

Vous aurez aussi besoin d'être administrateur pour que travailler Comme vous pouvez l'attendre sous Vista/Windows 7.