Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Delphi项目中手动更改版本信息_Delphi_Msbuild_Ide_Delphi 2007_Versioninfo - Fatal编程技术网

如何在Delphi项目中手动更改版本信息

如何在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

我想在Delphi项目中手动设置一个没有IDE的程序版本。 当我像这样更改
*.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