2010-03-03 7 views
1

J'essaie d'utiliser la ligne de commande post build pour obtenir ma bibliothèque de classes dans le GAC. Il est:Ligne de commande d'événement Post Build VS2008 64 bits

"%programfiles%\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe" -if $(TargetPath) 

Je ne vois pas d'erreur, mais ma DLL ne reçoit pas dans le GAC. Cependant, je peux exécuter ceci à partir d'une invite DOS et cela fonctionne. Quelque chose de spécial je dois faire pour que cette commande fonctionne dans VS comme ça?

+0

Voyez-vous le message "Assemblage ajouté avec succès au cache" après la construction? Je ne devine pas, mais je suis curieux. –

+0

non je ne sais pas, mais je le vois quand je le lance dans une fenêtre DOS, mais ce n'est pas une surprise je suppose – bmw0128

+0

Odd. Peut-être essayez de définir l'option "Exécuter l'événement de post-construction" sur "Toujours". –

Répondre

2

La réponse est que sur un système 64 bits,% programfiles% doit être remplacé par

%ProgramW6432% or %ProgramFiles(x86)% 

Merci pour toute l'aide.

+0

désolé, je n'ai pas mentionné que je suis sur un OS 64 bits – bmw0128

+0

Il est curieux qu'aucune erreur ne s'est produite. Je pensais à la question 32 bits contre 64 bits ... mais je pensais qu'il aurait dû montrer une sorte d'erreur si elle n'a pas aimé le binaire. De toute façon, +1 pour suivre et rapporter la réponse. –

1

Courez-vous sous Vista, Win7 ou Win 2008 et UAC fait tourner Visual Studio dans un contexte non-administrateur? Et vous lancez l'invite de commande avec des privilèges d'administrateur?

+0

Je suis connecté en tant qu'administrateur, sur Windows 2008 R2 Server, alors oui, quand j'ouvre une fenêtre de commande DOS, c'est qui je suis, pensez-vous que ce n'est pas la même chose quand je cours en VS? Qu'est-ce que UAC? – bmw0128

+1

UAC est le contrôle d'accès utilisateur, c'est une façon de réduire vos privilèges, même lorsque vous êtes un administrateur. Si une action nécessite des privilèges d'administrateur, une fenêtre contextuelle vous demande si vous avez déclenché l'action. Son but est d'empêcher les logiciels malveillants d'agir en votre nom, sans que vous le remarquiez. Si vous pensez que sur Win2K8 R2, une invite de commande est exécutée avec UAC désactivé afin que gacutil fonctionne correctement. Essayez de cliquer avec le bouton droit de la souris sur votre raccourci VS et trouvez "runs as admin", sélectionnez-le et réessayez. – Timores

+0

essayé et pas aller, j'ai cliqué droit et choisi "Exécuter en tant qu'administrateur", je n'ai rien fait avec l'UAC, devrais-je regarder dans ce domaine? – bmw0128

0

Vous pourriez avoir besoin des guillemets doubles autour de la cible: "$(TargetPath)"

+0

qui ne l'a pas fait – bmw0128

+0

Si votre chemin ne contenait aucun espace, je suppose que cela ne ferait aucune différence. Et à y penser, s'il y avait des espaces je pense que vous auriez vu une erreur dans la sortie. –