2011-06-01 94 views
5

我們目前使用Delphi 2009和GIT開發應用程序。我們已經建立了一個預生成腳本,使用git中的信息生成版本號和構建ID,並將其編譯爲項目中包含的資源。問題是這個腳本不能在常規編譯中運行。這意味着其他開發人員最終會在實際版本號和資源中的數字之間出現差異(特別是在git中切換分支時)。如何強制預編譯腳本在每次編譯時運行

由於我們使用我們的軟件進行一些關鍵計算,我們希望使用此構建標識來重現計算並查找問題。

除了試圖迫使我的開發人員經常按shift-F9,我怎麼能確保prebuild腳本在必要時運行(最好在每次編譯時)呢?

傑森

UPDATE:即預生成腳本得到在每個編譯運行這是真的。問題在於,我希望在git中創建標籤後按F9得到不同的結果,即使代碼沒有改變。

+0

我的預生成操作在每次編譯時運行。我無法想象你爲什麼不這樣做。 – 2011-06-01 12:17:49

+0

那麼,當我按F9編譯/運行程序時,版本信息通常是過期的。 Shift-F9總是解決這個問題。我想我可能會更加嚴格,但假設prebuild批處理就是preBUILD,因此只有在明確構建時纔會啓動。 – boileau 2011-06-01 20:58:22

回答

0

預編譯操作在每次編譯之前都會運行。

您在評論中聲明,按F9時有時不會運行這些操作。這是有道理的,因爲如果源被認爲已經改變,F9或Run只調用一個編譯。

BeforeCompile通知程序插件的行爲方式完全相同。您的解決方案是確保在使用Ctrl + F9運行之前進行編譯。

3

我們通過編寫使用IOTAIDENotifier50接口的自定義IDE插件來解決類似問題。特別使用BeforeCompile方法來測試一些必需的項目設置,並生成動態版本信息(VERSIONINFO資源)。它被稱爲每種類型的構建(編譯和構建)。我們還生成一個唯一的exe序列號並記錄所有內容,這有助於我們追蹤問題並與您的腳本類似。爲了完整起見,我們只在Delphi 2007和Delphi XE中完成了這一工作。

+0

這聽起來像是我沒有資源(時間)來做我自己的事情。你願意分享你的插件的一些源代碼嗎? – boileau 2011-06-01 20:55:34

+0

儘管它不能解決您的問題,但編寫這樣的插件非常簡單。在添加前期和後期構建操作之前,我做的和史蒂夫完全一樣,它確實很簡單。 – 2011-06-01 21:18:00