2014-06-04 47 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类型库文件本身并不完全是唯一的。

相关问题