Delphi XE5 се прекомпилира всеки път, когато стартирам проект. Това се случва дори когато не са направени промени

Претърсих SO, блогове и EDN в търсене на отговори, но без резултат. Това не може да е умишлено, дори изградих проекта извън обичайното си работно пространство с код, за да се уверя, че няма направени външни промени, и проблемът все още възниква.

Най-близкият подобен проблем, който можах да намеря, е по-долу:

в XE5 всеки път, когато направя проект, той прекомпилира всичко

Това се случва дори с нов VCL формуляр, без никакви промени. Всеки път, когато избера F9 за изпълнение на проекта, получавам диалогов прозорец за компилатор. Наскоро мигрирах Delphi XE, който нямаше този проблем.

Всеки съвет ще бъде високо оценен, благодаря!


person Alex Biery    schedule 10.10.2014    source източник
comment
Това се случва всеки път, дори с Delphi 2007, дори когато не се извършва реално компилиране. Направена е проверка на файла на проекта и след това се проверяват всички зависимости, за да се види дали нещо се е променило. Ако диалоговият прозорец е досаден, изключете го в Tools-›Options-›Environment Options, като премахнете отметката от полето Show compiler progress. (Диалоговият прозорец се показва само за няколко секунди, освен ако не сте му казали да остане видим.)   -  person Ken White    schedule 10.10.2014
comment
@KenWhite, благодаря ти за отговора! Разбирам и оценявам какво прави проверката, но има моменти, в които няма да правя промени и ще получа диалоговия прозорец (макар и за около 10 секунди), а други моменти, в които диалоговият прозорец дори не се появява и приложението се стартира веднага, дори и с отметнато поле Show compiler progress.   -  person Alex Biery    schedule 10.10.2014
comment
Как да възпроизведем това?   -  person David Heffernan    schedule 10.10.2014
comment
Може да получите по-добри отговори във форумите на Embarcadero или да се свържете с поддръжката на Embarcadero. В зависимост от късмета ви може да затворите въпроса си като извън темата или твърде широк или каквото и да е.   -  person David    schedule 10.10.2014
comment
Забавяне с променлива дължина между стартиране на компилиране/изпълнение и появяване на приложението може да бъде причинено от AV s/ware. Също така MalwareBytes, въпреки че не е строго AV, изглежда причинява подобно. Този вид s/ware често изглежда се обажда вкъщи, докато проверява ново приложение.   -  person MartynA    schedule 11.10.2014
comment
@Alex: Delphi, за разлика от повечето други компилатори, всъщност генерира изпълним файл всеки път, когато стартира вашето приложение. (При малки приложения често дори не забелязвате, защото компилаторът е толкова бърз, особено когато не показвате напредъка на компилатора.) Всеки проблем на компютъра ви (други процеси, чакащи I/O дискове, кеш на системните файлове , и т.н.), което прави I/O по-бавен, ще се отрази на скоростта на компилатора, което означава, че при някои проекти еднократното компилиране ще покаже диалоговия прозорец (тъй като файловете не се зареждат в кеша) и повторното компилиране няма. Винаги е било така.   -  person Ken White    schedule 11.10.2014
comment
@DavidHeffernan Най-простият пример, за който се сещам, е просто създаване на ново приложение VCL Forms. File›New›VCL Forms Applcation›Run. Затворете приложението › Щракнете върху Изпълнение отново. В XE приложението стартира веднага, а в XE5 се прекомпилира отново. Качих видео сравнение на двете за пример тук: youtu.be/WG7mO-lqOIw или youtube.com/watch?v=WG7mO-lqOIw . Качването приключи, въпреки че може да не е напълно публично, тъй като все още се обработва.   -  person Alex Biery    schedule 11.10.2014
comment
@Ken На XE F9 не води до компилиране, ако проектът е актуален   -  person David Heffernan    schedule 11.10.2014
comment
@David: Става за проекти с всякакъв значим размер, точно както за D2007, XE2, XE5 и XE6. (Все още не съм направил много с XE7, така че все още нямам нищо от какъвто и да е размер, с което да тествам.)   -  person Ken White    schedule 11.10.2014
comment
@Ken Работя върху чисто ново приложение за vcl формуляри според коментарите на питащия   -  person David Heffernan    schedule 11.10.2014


Отговори (1)


Това поведение изглежда е проектирано. Няма нищо лошо в инсталациите ви. Всички мои инсталации на Delphi от XE3 и по-късно се държат по начина, който описвате и показвате за вашата инсталация XE5. Всички мои XE2 и по-ранни инсталации се държат по начина, който описвате и показвате за вашата XE инсталация.

person David Heffernan    schedule 11.10.2014
comment
Отговорът ви има смисъл, но не нарушава ли целта на проверката dcu/up-to-date, ако тя винаги се компилира, независимо дали е променена? Знам, че за някои това е незначителен проблем, но ако коригирам грешка, това може да доведе до 2-минутен тест, който да отнеме 10 минути, ако седя и чакам повторно компилира всеки път, когато стартирам приложението. - person Alex Biery; 13.10.2014
comment
Той компилира само остарелите единици. Когато правите това в голям проект, компилирането отнема няколко секунди, време, прекарано в проверка дали модулите са актуални или не. - person David Heffernan; 13.10.2014
comment
Актуализация: За всеки друг, който беше толкова разочарован от тази не толкова желана като проектирана резолюция, намерих пакет за корекции, който ускори процеса на компилиране (поне за мен) неимоверно. Разбира се, тъй като не е създадено от Embarcadero, не е поддържано решение, но със сигурност работи за мен! Връзка тук: andy.jgknet.de/blog/ide-tools/ ide-fix-pack Много благодаря на г-н Андреас Хаусладен! - person Alex Biery; 31.10.2014
comment
В Токио без IDE Fix Pack деактивирането на Error Insight коригира описания проблем. - person Victoria; 14.09.2017