Question

Vous vous demandez si quelqu'un a une solution à ce bug 2010. J'ai un projet bien construit dans Visual Studio 2008 que la construction wont en 2010 parce que Visual Studio tient à la dll après l'application est exécutée uniquement si une fenêtre de concepteur est ouvert. J'ai créé un projet de poids très léger qui montre ce problème. Si vous créez une application puis créez une dll lib. Mettez une forme dans le dll, ouvrez le formulaire en mode de conception, puis exécutez l'application. Il fonctionnera bien, puis fermez l'application, allez à la vue de code du formulaire en vue de la conception, et changer le code (je viens retitré une seule variable) puis essayez de vous recompiler obtenir ce qui suit:

Erreur 1 Impossible de copier le fichier "obj \ Debug \ customlib.dll" à "build \ debug \ customlib.dll". Le processus ne peut pas accéder au fichier « build \ debug \ Customlib.dll » car il est utilisé par un autre processus.

Si vous exécutez Process Explorer et recherchez le dll, le seul processus qui détient le dll est devenv.exe !!!

J'ai fait une tonne de recherche sur ce problème et ont trouvé des problèmes similaires avec les anciennes versions de Dev studio où les gens ont pu simplement ajouter un pré-étape pour déplacer le dll verrouillé à un autre nom (.locked) et la construction. Bien que fonctionne la première fois, mais la prochaine fois que vous exécutez ensuite modifier vous des deux lock-out le dll actuel et celui que vous avez déplacé à .locked, donc à moins que je suis prêt à ajouter du code pour générer au hasard un nom pour le dll verrouillé , cela ne marchera pas pour moi (je ne veux pas que ma taille du répertoire de débogage de croître avec les fichiers ne se supprimer.)

Je n'ai trouvé une solution de contournement et si vous êtes dans ce même bateau est ce que je dois faire pour modifier et exécuter. Je veille à la fenêtre de vue de la conception EVERY est fermé avant que je lance mon projet dans le débogueur. Si vous fermez toutes les fenêtres de vue sur la conception ouverte DEVENV.EXE ne tiendra pas la dll.

quelqu'un a une meilleure solution à ce problème?

Était-ce utile?

La solution

Je ne suis pas sûr que cela fonctionnera pour vous ou non, mais cette même question si vous avez cette ligne dans AssemblyInfo.cs:

[assembly: AssemblyVersion("2.0.*")]

changer à:

[assembly: AssemblyVersion("2.0.0.0")]

résoudra ce isue.

Le Visual Studio add-sur les demandes " VSCommands " d'avoir une solution à ce problème. Je ne l'ai pas encore testé, mais aussi prétend avoir en IDE tracker de réputation qui me intrigue:)

Votre « designer Fermer avant le débogage » solution semble fonctionner pour moi (jusqu'à présent), dont je suis très reconnaissant. Il commençait à arriver au stade où suis grande partie de ma journée a été consacrée dans le flux de travail suivant ...

  1. F5

  2.   

    forte juron

  3. ALT F4

  4. WIN 3

  5.   

    attend avec impatience ...

  6. F5

Autres conseils

J'ai eu les mêmes problèmes depuis longtemps et puis tout à coup ils ont disparu. Je compris que la source des problèmes a été dans les codes d'initialisation constructeurs de services WCF et les contrôles WPF. Après avoir nettoyé les constructeurs de toutes les dépendances à d'autres assemblées tout a été très bien.

Donc, ma suggestion est: Nettoyez vos constructeurs.

Dans WPF, il est possible que l'insertion:

if (DesignerProperties.GetIsInDesignMode(this)) return;

ou similaire aura le même effet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top