2011-02-27 6 views
1

Pour chaque exemple d'enregistrement d'objets .NET COM dans le web, je vois l'outil "regasm" pour faire le travail. Tout le monde le fait !!!
Mais ça n'a jamais marché pour moi! Je suis fatigué d'essayer de le surmonter! Ma seule solution serait regsvr32, ce qui nécessite une fonction que je pourrais seulement définir en C++.
S'il vous plaît dites-moi pourquoi ça ne marcherait pas !!! Considérant que cela ne fonctionne pas sur les 4 ordinateurs, plus 3 machines virtuelles, exécutant Windows 7 jusqu'à 2000, quelqu'un peut-il me montrer un exemple de fonctionnement d'un appel regasm? Je pense que je suis un idiot.regasm ne fonctionne tout simplement pas

+0

Pourriez-vous définir "ne fonctionne pas" pour nous? –

Répondre

8

L'enregistrement d'assemblys [ComVisible] .NET avec Regsvr32.exe n'est pas possible. Il n'a pas le point d'entrée DllRegisterServer requis dont Regsvr32 a besoin. Vous devrez le faire fonctionner avec Regasm.exe ou un projet d'installation. Ce dernier est nécessaire lorsque vous déployez votre serveur sur une autre machine.

Il existe peu de modes de défaillance. Autre que:

  • oublier d'utiliser l'option/codebase. Requis si vous ne déployez pas l'assembly dans le GAC, ce que vous ne devriez pas faire sur votre machine dev.

  • en utilisant la mauvaise version de Regasm.exe. Il y en a deux sur une machine 64 bits, le répertoire Framework64 contient celui que vous devez utiliser si le code client est 64 bits.

  • l'exécuter à partir d'une invite de commande qui n'est pas élevée. Regasm.exe écrit dans la ruche HKLM du registre, ce que l'UAC empêche activement. C'est un problème sur Vista et Win7.

Il est bien sûr également possible que l'assemblage soit grossièrement erroné. Comme ne pas créer une ou plusieurs interfaces et/ou classes [ComVisible].

+0

Visual C++ (.NET) peut faire DLLRegisterServer, c'est pourquoi je pourrais utiliser regsvr32. Quoi qu'il en soit, cette option/codebase devrait être la clé, je suppose. – Vercas

+1

'/ codebase' était la réponse. Merci beaucoup d'avoir finalement ouvert la voie à la programmation shell! – Vercas

0

Il est possible, j'ai eu ce défi avant, et je courais ce code dans la fenêtre cmd et cela a fonctionné j'ai découvert qu'il dépendait de la version du framework .net l'assemblage a été buit sur copier et coller le code ci-dessous

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll 

Veuillez voter si cela fonctionne pour vous.

Questions connexes