Зачем VS2005 искать файл, который он должен генерировать?
-
08-07-2019 - |
Вопрос
Я работаю над приложением PocketPC в Visual Studio 2005. Решение работало нормально, а потом внезапно сломалось. Первая ошибка заключается в следующем (предположим, что проект FooPDA):
" Невозможно найти исходный файл 'C: \ FooPDA \ obj \ Release \ FooPDA.exe' для файла 'FooPDA.exe', расположенного в "% InstallDir%", файл может отсутствовать или заблокирован. " р>
Эта ошибка меня смущает. Он ищет файл, который должен генерировать. Кто-нибудь знает, что может быть не так?
<Ч>Изменить . Проект прекрасно работает прямо из-под контроля версий, я просто меняю значок в проекте , и он начинает выдавать эту загадочную ошибку.
Решение
Вид% InstallDir% в сообщении об ошибке может быть причиной. У вас есть проект установки и развертывания в вашем решении? Он собирается до вашего проекта FooPDA? Видеть это в obj тоже подозрительно.
<Ч>OP Edit . Вы были на правильном пути, поэтому я предоставлю вам ответ. Оказывается, что когда вы делаете перестройку, компилятор Visual Studio 2005 довольно глуп, потому что он не останавливается, когда попадает в проект, который он не может скомпилировать. Он просто продолжает компилировать и выдавать ошибки.
Это конкретное решение содержит три проекта. Мы назовем их FooPDA, PDAComponents и Setup. Я изменил значок в проекте FooPDA, и решение больше не будет компилироваться. Ошибка, на которой я концентрировался, не имела ничего общего с реальной проблемой. Мне следовало сосредоточиться на ошибке, которую я увидел, когда делал первоначальную сборку:
CVTRES: фатальная ошибка CVT1103: не удается прочитать файл
Я в основном сорвал это и немедленно сделал восстановление. Именно тогда ошибка, которую я отправил, достигла вершины списка ошибок, и я был зациклен на этом. Я не должен был быть. Первоначально опубликованная ошибка была связана с тем, что FooPDA не компилировался, поэтому FooPDA.exe был недоступен, когда пришло время компилировать проект установки. Причина, по которой FooPDA не удалось скомпилировать при смене значка, заключалась в том, что .ico-файл, который я пытался добавить, содержал несовместимые размеры и / или глубину цвета значка . Очевидно, что компактная структура (или целевая платформа, PocketPC 2003?) Понимает только некоторые из них. Файл .ico, который я пытался добавить, содержал в себе всевозможные размеры и глубину цвета (вплоть до 256x256 @ 32 бит). Я посмотрел на файл .ico, который изначально был там, и в нем было всего две иконки 48x48. Один 24-битный цвет и один 8-битный. Я открыл свой новый файл .ico в редакторе значков и изменил его так, чтобы он содержал тот же размер и глубину цвета, что и оригинал, и все было в порядке с миром. Теперь решение компилируется с новым значком, без проблем.
С одной стороны, я чувствую себя немного глупо из-за того, что не могу понять это (я наконец спросил коллегу, который сталкивался с этим раньше). С другой стороны, что f ** k делает "CVTRES: фатальная ошибка CVT1103: невозможно прочитать файл" скажи мне? Ничего такого! Что не так с " Ошибка: несовместимый значок "?
Другие советы
Иногда это происходит со мной в библиотеках классов и т. д. Если решение не собирается должным образом, оно никогда не доходит до того момента, когда оно создает файл .exe. Р>
Можете ли вы скомпилировать, не запуская проект, или вы получаете ту же ошибку, когда просто пытаетесь скомпилировать?
Если вы можете, я постараюсь исправить любые ошибки компиляции и перестроить.
Закройте Visual Studio. Очистите ваше решение. Создайте свое решение снова.
Сообщение появляется снова?
Иногда VS блокирует некоторый файл при компиляции, он может быть заблокирован из предыдущей сборки.
" Невозможно найти исходный файл 'C: \ FooPDA \ obj \ Release \ FooPDA.exe'
Он пытается создать файл C: \ FooPDA \ bin \ Release \ FooPDA.exe. Р>
C: \ FooPDA \ obj \ Release \ FooPDA.exe - это один файл (хорошо, почти единственный), который он использует для его создания (в основном, путем его копирования).
По какой-то другой причине сборка не удалась (ошибка синтаксиса и т. д.), но в остальной части процесса сборки слово не пришло и продолжалось.