Зачем VS2005 искать файл, который он должен генерировать? - PullRequest
2 голосов
/ 15 ноября 2008

Я работаю над приложением PocketPC в Visual Studio 2005. Решение работало нормально, а потом внезапно сломалось. Первая ошибка заключается в следующем (предположим, что проект FooPDA):

"Не удалось найти исходный файл« C: \ FooPDA \ obj \ Release \ FooPDA.exe »для файла« FooPDA.exe », расположенного в«% InstallDir% », файл может отсутствовать или заблокирован."

Эта ошибка меня довольно смущает. Он ищет файл, который должен генерировать. Кто-нибудь знает, что здесь может пойти не так?


Редактировать : Проект прекрасно работает прямо из-под контроля версий, Я просто меняю значок в проекте , и он начинает выдавать эту загадочную ошибку.

Ответы [ 4 ]

10 голосов
/ 15 ноября 2008

Вид% 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: не удается прочитать файл»? Ничего такого! Что не так с «Ошибка: несовместимый значок»?

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

Закрыть Visual Studio. Очистите ваше решение. Создайте свое решение снова.

Появляется ли сообщение снова?

Иногда VS блокирует некоторый файл при компиляции, он может быть заблокирован из предыдущей сборки.

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

"Невозможно найти исходный файл 'C: \ FooPDA \ obj \ Release \ FooPDA.exe'

Он пытается создать файл C: \ FooPDA \ bin \ Release \ FooPDA.exe.

C: \ FooPDA \ obj \ Release \ FooPDA.exe - это один файл (хорошо, почти единственный), который он использует для создания этого (в основном, путем его копирования).

Звучит так, как будто по какой-то другой причине сборка не удалась (синтаксическая ошибка и т. Д.), Но в остальной части процесса сборки слово не пришло, и он продолжал.

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

Иногда это случается со мной в библиотеках классов и т. Д. Если решение не собирается должным образом, оно никогда не доходит до того момента, когда оно генерирует файл .exe.

Можете ли вы скомпилировать, не запуская проект, или вы получаете ту же ошибку, когда просто пытаетесь скомпилировать?

Если вы можете, я бы попробовал исправить любые ошибки компиляции и перестроить.

...