我正在使用此功能来获取我的程序的当前版本。 我的问题是当我在Git上签出/切换到我的本地分支时,dwFileVersionLS会被覆盖。
采取这种情况,
我有两个分支,
'Branch1' - GetFileVersion返回'6.7.5.21'
'Branch2' - GetFileVersion返回'6.7.5.25'
我当前的分支是'Branch2',我重建了我的应用程序,这会将我的'Branch2'GetFileVersion增加到'6.7.5.26'。
我在'Branch2'上进行了更改,并检查了我的'Branch1'和GetFileVersion返回'6.7.5.26'。 (因为我没有对这个分支做任何修改,所以应该是'6.7.5.21')
(编辑)此外,当我在'Branch1'上重建我的应用程序时,这会将我的构建版本增加到'6.7.5.22'。
function TGSGGlobal.GetFileVersion: String;
var
VerInfoSize: Cardinal;
VerValueSize: Cardinal;
Dummy: Cardinal;
PVerInfo: Pointer;
PVerValue: PVSFixedFileInfo;
begin
Result := '';
VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName), Dummy);
GetMem(PVerInfo, VerInfoSize);
try
if GetFileVersionInfo(PChar(Application.ExeName), 0, VerInfoSize, PVerInfo) then
if VerQueryValue(PVerInfo, '\', Pointer(PVerValue), VerValueSize) then
with PVerValue^ do
Result := Format('v%d.%d.%d.%d', [
HiWord(dwFileVersionMS), //Major
LoWord(dwFileVersionMS), //Minor
HiWord(dwFileVersionLS), //Release
LoWord(dwFileVersionLS)]); //Build
finally
FreeMem(PVerInfo, VerInfoSize);
end;
end;
该应用程序包含在Git Reporistory中。
(编辑)我发现切换分支时不会刷新/更新项目.res文件。我需要重新打开我的项目才能使我的分支机构成为最新的版本。