2014-06-04 48 views
7

在C++ Builder XE5中。.res文件是否需要在源代碼管理中?

我的理解is that二進制文件MyProject.res(這是由編譯器在同一目錄中.cbproj文件創建)包含編譯的程序圖標和項目版本細節的版本(雖然雷似乎也包含XML清單) 。

但是,此信息也包含在.cbproj文件和.ico files;如果我刪除.res文件,那麼它似乎會重新創建,正是下一次我打開該項目。

那麼將*.res標記爲不在源代碼控制中安全嗎? (我使用git)。和/或是否有可能在與目標文件相同的目錄中生成它,因此它不會與源文件混合在一起? (這在C++ Builder 5中肯定不安全 - 如果你刪除了.res文件,那麼它抱怨它找不到它,並且你失去了你的圖標)。

更新:這是否也適用於.tlb文件?這似乎是基於.ridl文件編譯的,如果我刪除它,它會自動重新生成。

+0

關於資源文件:如果您是單個開發人員,我不認爲有必要將.res文件置於源代碼管理之下。然而,我的一些同事報告了多用戶項目的問題 - 在從存儲庫中提取文件(subversion)後資源變得「混亂」。特別是TImageList圖像的透明度/背景顏色屬性。但它似乎隻影響某些系統,不幸的是我不知道爲什麼。出於那個唯一的原因,我們在源代碼控制中包含.res文件。 – HvS

+0

注:我所指的導致問題的文件是.dfm文件。 – HvS

+0

DFM當然需要在源代碼控制中,因爲它們是存儲窗體細節的地方! AFAIK DFM和RES之間沒有關係? –

回答

4

如果刪除,C++ Builder 6.0和更高版本將重新創建RES文件。我將它們視爲其他臨時/構建文件(如OBJ文件),並且不要將它們放入版本控制軟件中。我確實有夜間備份,包括所有這些文件,儘管如此,我認爲這仍然是一個很好的做法。

我不確定TLB文件。我會暫時刪除(又名 - 重命名)一個,看看它是否被重新創建到相同的狀態。如果是這樣,應該與RES文件相同。

雖然這對第三方庫不適用,但如果您擁有的是編譯資源。在這種情況下,我仍然沒有放置在我的版本控制中,因爲我不會修改它們。我只有我的備份。

+2

在C++ Builder 2009中引入RIDL之前,刪除TLB文件是不安全的,否則會丟失類型庫。當RIDL被引入時,TLB成爲一箇中間文件,在需要時被重新創建。 –

3

TFS源代碼管理的默認值是排除*.res,但包括*.tlb

因此,您應該期望*.res文件由其關聯的版本創建。如果版本不存在,則應該包含*.res文件。

我懷疑你正在構建的文件也是*.tlb,但也許TFS不會在默認情況下排除這些文件,因爲擴展對於OLE類型庫文件本身並不完全是唯一的。

相關問題