2008-11-25 7 views
3

C'est un problème étrange que j'ai commencé à avoir récemment. Mon équipe développe une application COTS et nous avons quelques personnes avec leurs mains dans le code. Il y a quelques semaines, je reçois un message d'erreur lors de la tentative de débogage (et exécuter le compilé EXE):.Pourquoi Visual Studio/CLR produirait un "mauvais" exécutable?

« Windows ne peut pas accéder au périphérique spécifié, chemin ou fichier Vous ne pouvez pas avoir les autorisations appropriées à accéder à l'élément. "

Il a fini par je devais factoriser ce bout de code:

mcolSchedulesNeedingOverride(New Guid(lstrErrorParts(0))) &= vbNewLine & lstrErrorParts(2) 

pour ceci:

Dim lguidKey As New Guid(lstrErrorParts(0)) 
Dim lstrErrorMsg As String = mcolSchedulesNeedingOverride(lguidKey) 
lstrErrorMsg &= vbNewLine & lstrErrorParts(2) 
mcolSchedulesNeedingOverride(lguidKey) = lstrErrorMsg 

Cela laisse ensuite VS pour générer un fichier EXE qui fonctionnait vraiment. Je ne comprends vraiment pas pourquoi, mais ça a marché. J'ai utilisé l'utilitaire peverify pour déterminer quel assembly avait un problème.

Maintenant, j'ai le même problème dans une branche de code différente après environ 25 fichiers ont été mis à jour hier. Cela ne va PAS être amusant à traquer - j'espérais donc que quelqu'un pourrait donner un aperçu de la raison pour laquelle cela pourrait se produire - et cela pourrait m'aider à préciser où regarder.

peverify montre tout nos assemblages pour être corrects, mais est en train de retourner plus de 90 erreurs pour System.Windows.Forms.dll!

Quelqu'un a des conseils?

Répondre

2

Vous dites que vous avez plusieurs développeurs qui travaillent sur le projet, donc je me demande s'ils rencontrent aussi ce problème. Si cela se produit uniquement sur votre machine, je ne chercherais pas un problème dans le code (le refactoring que vous avez fait semble n'avoir aucun rapport avec l'erreur, donc je suppose que la raison pour laquelle il fonctionnait après était un autre) allez chercher un problème dans votre environnement.

Peut-être que quelque chose est cassé ou mal configuré avec votre installation .NET Framework. Pouvez-vous voir quel fichier lance le message d'erreur? Toute politique définie pour tout assemblage sur votre machine?

+0

Eh bien, le problème d'origine - d'autres développeurs peuvent exécuter le programme, mais obtiendrait un InvalidProgramException quand ce code était appelé. Je ne pouvais tout simplement pas exécuter l'application du tout. Changer le code l'a fixé pour tous. – Alarion

+0

Eh bien, je "rolledback" à une révision SVN que je savais travaillé. Et ça n'a pas marché.J'ai fini par redémarrer, qui l'a réparé cette fois. Je suppose qu'il est possible que Comodo Firewall/ID ait quelque chose à voir avec ça. De toute façon, même si votre réponse était le bon sens principalement, il m'a aidé à résoudre le problème, donc je l'ai marqué =) – Alarion

+0

Eh bien, alors vissez AntiVirus sh * t et tel .. UAC est tout ce dont nous avons besoin. –

0

Je rencontre le plus souvent ce message d'erreur lorsque je retire un fichier binaire de l'emplacement net/non sécurisé. Windows sera "utile" et en bloquera l'accès.

Clic droit sur le fichier et choisissez Propriétés, puis « débloquer »

Il est étrange que l'erreur se manifeste différemment ailleurs, si cela peut être tout à fait sans rapport; mais construire sur votre machine aurait des fenêtres traitant le fichier différemment d'une copie téléchargée ... pas sûr comment cela se rapporte à un redémarrage si.

Edit: voir this kb article pour une description plus approfondie de la « fonctionnalité » Je faisais référence à

Questions connexes