如何在Delphi项目中手动更改版本信息
我想在Delphi项目中手动设置一个没有IDE的程序版本。 当我像这样更改如何在Delphi项目中手动更改版本信息,delphi,msbuild,ide,delphi-2007,versioninfo,Delphi,Msbuild,Ide,Delphi 2007,Versioninfo,我想在Delphi项目中手动设置一个没有IDE的程序版本。 当我像这样更改*.dproj文件时: <VersionInfo> <VersionInfo Name="IncludeVerInfo">True</VersionInfo> <VersionInfo Name="AutoIncBuild">False</VersionInfo> <VersionInfo Name="MajorVer">1
*.dproj
文件时:
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">2</VersionInfo>
<VersionInfo Name="Release">3</VersionInfo>
<VersionInfo Name="Build">456</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1049</VersionInfo>
<VersionInfo Name="CodePage">1251</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
...
<VersionInfoKeys Name="FileVersion">1.2.3.456</VersionInfoKeys>
...
<VersionInfoKeys Name="ProductVersion">1.2.3.456</VersionInfoKeys>
</VersionInfoKeys>
我在文件属性中获得了带有空版本信息的*.exe
文件
但是,当我在IDE中设置版本并使用相同的MSBuild调用进行构建时,一切正常*.exe
有版本信息
问题:为什么同一个
*.dproj
文件会得到不同的结果?通常删除MyProject.res文件时,Delphi应该能够从其他项目数据中重新构建它
我知道IDE有,请检查命令行编译器是否也有。在我使用Delphi XE2所做的一点工作中,我看到了一个cgrb.exe
(code Gear Resource Builder),它就是这样做的
因此,在更新.dproj中的版本号时,请删除.res并让生成过程重新创建它。我认为您应该更改RC/res文件,因为VERSIONINFO是Windows PE-EXE资源的一部分。我认为DPROJ文件只包含由delphi导出到RC文件中的值。因此,您应该阅读MSBuild是否编译资源(如果它编译了资源,并且第一个命令调用brc.exe)如果有-编辑文本
ProjectName.RC
,如果没有,则编辑二进制ProjectName.RES
PS。请编辑您的问题,并在问题文本下方添加delphi版本的标记。您不需要使用/t:rebuild
强制完成重建吗?rebuild不帮助跟踪在重建过程中哪些文件是红色的使用SysInternals进程监视器进行编译。您应该看到链接到EXE的RC或RES文件,这些文件应该包含VERSIONINFO资源。虽然它与MSBuild无关,但您可以使用类似的内容,而不是使用IDE的内置版本支持,然后使用预生成事件来更新它。将资源脚本正确地添加到代码中,然后将其作为Delphi构建过程的一部分自动重新编译。
call rsvars.bat
MSBuild.exe blabla.dproj /p:configuration=release