Зачем VS2005 искать файл, который он должен генерировать?

StackOverflow https://stackoverflow.com/questions/291558

Вопрос

Я работаю над приложением 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 - это один файл (хорошо, почти единственный), который он использует для его создания (в основном, путем его копирования).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top