11
votes

Erreur MSB3216 lors de l'enregistrement de l'assemblage

Voici les détails d'erreur:

Dans la liste d'erreur:

erreur 1 ne peut pas enregistrer l'assemblage "C: \ users \ userman \ documents \ Visual Studio 2008 \ Projets \ Exceladdin1 \ Exceladdin1 \ bin \ Debug \ Exceladdin1.dll" - Accès refusé. Veuillez vous assurer que vous exécutez l'application en tant qu'administrateur. Accès à la clé de registre 'HKEY_CLASSES_ROOT \ Exceladdin1 ...' est refusé. C: \ Windows \ Microsoft.net \ Framework \ v3.5 \ Microsoft.common.Taregets 3019 9 Exceladdin1

dans la sortie de construction:

Objectif cible d'une entreprise: C: \ Windows \ Microsoft.net \ Framework \ v3.5 \ Microsoft.common.Targets (3019,9): Erreur MSB3216: Impossible d'enregistrer Assemblage "C: \ Users \ Documents \ Visual Studio 2008 \ Projets \ Exceladdin1 \ Exceladdin1 \ bin \ Debug \ Exceladdin1.dll "- Accès refusé. Veuillez vous assurer que vous exécutez l'application en tant qu'administrateur. Accès à la clé de registre 'HKEY_CLASSES_ROOT \ Exceladdin1 ...' est refusé. DONE CABRE CIBRE "ORGANISÉGRISSIGRATION" DANS LE PROJET "EXCELADDIN1.CSPROJ" - Échec.

De ce que j'ai trouvé en ligne, je dois exécuter Visual Studio en tant qu'administrateur. Cela ressemble à un grand marteau pour un petit clou. Y a-t-il un moyen de contourner cela (comme un moyen de courir juste l'enregistrement en tant qu'administrateur)?


0 commentaires

3 Réponses :


9
votes

Malheureusement, il n'y a pas de moyen facile de le faire. Par défaut Enregistrement, les composants ajoute des entrées aux clés protégées dans le registre (sous HKLM en particulier). Cela ne peut être fait sans droits administratifs.

Il est techniquement possible d'enregistrer des composants COM sous forme de non-administrateur en utilisant les clés équivalentes sous HKCU. Cependant, ce n'est pas un changement trivial et je ne crois pas que les outils .NET qui enregistrent les assemblages peuvent être configurés pour le faire.

Je pense que votre meilleure option est de désactiver l'enregistrement pendant la construction. Ensuite, disposez d'une fenêtre d'administration distincte ouverte là où vous pouvez vous rendre compte de l'enregistrement de la DLL des objectifs de débogage. La ré-enregistrement n'est vraiment nécessaire que si vous modifiez les interfaces associées ou l'emplacement de la DLL afin que cela ne soit pas à faire pour chaque F5.


0 commentaires

6
votes

Fermeture de Visual Studio et redéfinement à la suite d'une clic droit -> Exécuter en tant qu'administrateur a résolu le problème pour moi.


0 commentaires

1
votes

J'ai eu ce même problème avec Visual Studio 2017.

La réponse de JaredPar m'a conduit à cette mise en œuvre:

  • goto les propriétés du projet
  • Sélectionnez Build
  • UNICK Inscrivez-vous pour com Interop Capture d'écran
  • Sélectionnez Construire des événements
  • Ajouter une ligne de commande d'événement post-construction: xxx
    • dans la liste déroulante exécutez l'événement post-build: Sélectionnez: sur la construction réussie Capture d'écran
    • gérer une construction

      à la fin de la construction, vous verrez une fenêtre PowerShell exécutée en tant qu'administrateur (en fonction de vos paramètres, vous pouvez avoir une pop up de contrôle de compte d'utilisateur (UAC) vous demandant de confirmer avant de fonctionner).

      Remarque:

      • Cela trouvera la dernière version de Framework et utilisez Regasm à partir de là (crédit: Scott C ).
      • augmente le ; Sommeil 2 Si vous voulez plus longtemps de regarder la sortie pour confirmer l'enregistrement (ou utiliser ; pause à la place).

0 commentaires