2010-10-06 4 views
4

Je suis responsable de la maintenance du code VB6 hérité et j'ai rencontré un problème gênant en ce qui concerne le verrouillage de la DLL COM d'un projet. (Nous appellerons MyProject et MyProject.dll)VB6 IDE verrouille la DLL du projet chargé

Quand je charge MyProject dans l'IDE VB6, je suis en mesure de compiler la DLL binaire compatible résultant MyProject.dll. Je peux alors exécuter mon application Web (ASP classique) qui se connecte à la DLL (ou toute autre chose d'ailleurs). Ainsi, lorsque j'essaye de recompiler la DLL COM, j'obtiens une erreur 'permission denied'. Je puis me trouve avoir à effectuer les opérations suivantes étapes pour que la DLL à débloquer:

  1. Vérifiez je n'ai pas de projets dépendants ouverts dans d'autres environnements de développement VB6
  2. Recycle IIS
  3. Vérifiez le fichier ISN » t en lecture seule (parfois ce sera si je l'ai vérifié dans le contrôle de source)
  4. Fermez le projet et rouvrez-le.

Souvent c'est la dernière étape qui résout le problème, et me permet de recompiler, ce qui signifie que l'EDI VB6 verrouille réellement la DLL du projet chargé! Mon collègue m'a expliqué que cela avait à voir avec la façon dont un projet VB6 fonctionne avec la compatibilité binaire sur la DLL, mais n'a pas pu suggérer une résolution.

Mes recherches ailleurs ont donné très peu de réponses. Les requêtes de recherche qui sont liées à cela ont tendance à renvoyer beaucoup de réponses sans rapport (peut-être que je pose la mauvaise chose des moteurs de recherche).

La chose la plus proche que j'ai pu trouver sur Stackoverflow était this question d'il y a quelques années, mais cela ne correspond pas vraiment à la facture.

Est-ce que quelqu'un a d'autres suggestions qui pourraient améliorer cela?

+0

Avez-vous essayé de tuer le processus asp (inetinfo)? –

+0

@ GôTô - Recycling IIS fait cela. Je sais pour un fait que le problème est avec l'environnement VB6 –

+0

Etes-vous sûr de cela? –

Répondre

3

Conservez une copie de MyProject.dll nommée MyProject.cmp et définissez le paramètre compatible binaire sur votre fichier .cmp. De cette façon, vous n'aurez pas besoin de rouvrir le fichier de projet (étape 4).

Lors de l'enregistrement, vous pouvez marquer , puis pour ignorer l'étape 3 également.

+0

Oui, ça marcherait. Bonne idée. Cependant, cela ne gâcherait-il pas un peu l'environnement du projet pour quelqu'un qui n'a pas créé la copie comme vous l'avez suggéré? –

+0

... et quant à la caisse - je fais normalement, mais parfois j'oublie! C'était vraiment juste pour mettre en évidence les tracas que je dois traverser pour obtenir la DLL pour compiler! :-) –

+0

+1 c'est une bonne idée pour plusieurs raisons et est recommandé dans le manuel VB6 http: // msdn.microsoft.com/en-us/library/aa733706(v=VS.60).aspx @James Les paramètres compatibles binaires sont dans le VBP, donc tout le monde utilisera les mêmes paramètres. Je suppose que vous gardez le fichier VBP dans le contrôle de la source? Je recommande également de garder le 'MyProject.cmp' dans le contrôle de la source – MarkJ

Questions connexes