Зачем Visual Studio / CLR создавать «плохой» исполняемый файл? - PullRequest
3 голосов
/ 25 ноября 2008

Это странная проблема, с которой я недавно столкнулся. Моя команда разрабатывает приложение COTS, и у нас в руках несколько человек. Несколько недель назад я получил сообщение об ошибке при попытке отладки (и запуска скомпилированного EXE):

"Windows не может получить доступ к указанному устройство, путь или файл. Вы не можете иметь соответствующие разрешения на получить доступ к предмету. "

В итоге мне пришлось рефакторировать этот фрагмент кода:

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

В к этому:

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

Это позволило VS создать сгенерированный EXE-файл. Я действительно не понимаю почему, но это сработало. Я использовал утилиту peverify, чтобы определить, какая сборка вызывает проблему.

Теперь у меня та же проблема в другой ветке кода после того, как вчера было обновлено около 25 файлов. Это не будет весело выслеживать - поэтому я надеялся, что кто-нибудь сможет дать некоторое представление о том, почему это может происходить - и это может помочь мне сузить область поиска.

peverify показывает, что все наши сборки верны, но выпадает более 90 + ошибок для System.Windows.Forms.dll!

У кого-нибудь есть советы?

Ответы [ 2 ]

2 голосов
/ 25 ноября 2008

Вы говорите, что над проектом работают несколько разработчиков, поэтому мне интересно, сталкиваются ли они и с этой проблемой.

Если бы это происходило только на вашей машине, то я бы не стал искать проблему внутри кода (реорганизация, которую вы сделали, кажется, совершенно не связана с ошибкой, поэтому я думаю, причина, по которой она впоследствии работала, была другая) ищет проблему в вашей среде.

Возможно, что-то сломано или неправильно настроено при установке .NET Framework. Вы видите, какой файл выдает сообщение об ошибке? Любая политика определена для любой сборки на вашем компьютере?

0 голосов
/ 26 ноября 2008

Чаще всего я сталкиваюсь с этим сообщением об ошибке, когда вынимаю двоичный файл из сети / в каком-нибудь ненадежном месте. Windows будет «полезной» и заблокирует доступ к ней.

Щелкните правой кнопкой мыши файл и выберите свойства, затем «разблокировать»

Странно, что ошибка проявляется иначе в другом месте, так что это может быть совершенно не связано; но при сборке на вашем компьютере Windows будет обрабатывать файл иначе, чем загруженная копия ... хотя я не уверен, как это относится к перезагрузке.

Редактировать: см. эту кб статью для более подробного описания "функциональности", о которой я говорил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...