问题 如何跨平台管理Delphi XE2的版本信息


我正在将项目从XE迁移到XE2,我注意到我错过了我手动输入的版本信息,例如公司名称,产品版本等。创建一个简单的空VCL表单应用程序我看到在“所有配置”下输入版本信息的数据 - 当您选择“发布配置 - 32位Windows平台”时,所有平台都会消失。我想我可以通过平台重新输入我的信息,但这里发生了什么?人们会期望“所有配置 - 所有平台”信息在所有平台上传播,除非重写,就像编译器选项等,或者我错过了什么?

进一步说明 - 当我进一步调查时,我发现有一个工作正在使用 DDevExtensions 在“项目”下添加菜单选项。如果选中底部的“应用于选定”和“将VersionInfo应用于所有平台”框,则可以将显示的版本信息复制到所有平台,而不会影响组中的其他项目。


4350
2017-11-08 10:05


起源

在IDE中管理这些设置简直就是一场噩梦。我使用预构建脚本来完成它。您也可以考虑选项集,因为它们有助于控制项目选项设置的极端复杂性。 - David Heffernan
FWIW我后来发现这个DPROJ噩梦导致远程调试对我不起作用。解决方案是删除DPROJ并打开DPR,再次完成并填写项目详细信息。然后,远程调试工作。 - Brian Frost


答案:


这仍然是构建#16.0.4429.46931中的问题。但是,我发现我可以通过打开项目的“dproj”文件并删除所有<VerInfo_Keys>元素来消除此问题  对于基本属性组(<PropertyGroup Condition =“'$(Base)'!=''”>)。这样做可以将“所有配置 - 所有平台”版本信息继承到不同的构建和平台配置,而无需复制。


8
2018-03-28 23:14





它似乎是XE2中的一个错误导致版本信息不会从较高级别传播到较低级别。我在这个问题上开设的QC(99428)于11月7日关闭,标记为“在16.0.4256.43595版本中解析”。

对于生产用途(当我们切换到XE2时),我将使用FinalBuilder来获取正确的版本信息,但我等待修复,希望在下个月左右,以便让IDE构建与FB的实际版本匹配。但同时我会尝试使用修订包的建议......


2
2017-11-09 16:58



有用的信息,谢谢。 - Brian Frost
我使用的是版本16.0.4504.48759并且问题没有修复:-(。 - truthseeker


我相信版本信息中有一个“错误”,它将多个版本配置放入项目文件夹中的.djproj文件中。

如果您在第一次在Delphi XE2中打开它时将目标更改为所有配置似乎没问题。然后,一旦加载了下拉目标,只需单击粗体条目即可复制版本信息。如果您不小心点击非粗体条目,则文本将设置为默认值,并在.dsproj文件中永久保留。

我通过以下方式解决了这个问题 - 你需要根据需要修改细节 我建议你先看一下这个文件 - 它通常很明显它发生了什么。

1) 复制 项目.dsproj文件然后在记事本中打开项目.dsproj文件

2)找到它的第一次出现将在第40行附近。

3)将此位复制并粘贴在其​​上方。

<PropertyGroup Condition="'$(Base)'!=''">
                                            <DCC_ExeOutput>**c:\xxx**</DCC_ExeOutput>
                                            <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
                                            <VerInfo_Locale>2057</VerInfo_Locale>
                                            <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
                                            <VerInfo_AutoGenVersion>true</VerInfo_AutoGenVersion>
                                            <VerInfo_MinorVer>12</VerInfo_MinorVer>
                                            <Icon_MainIcon>**My_Icon.ico**</Icon_MainIcon>
                                            <VerInfo_Release>1</VerInfo_Release>
                                            <VerInfo_MajorVer>5</VerInfo_MajorVer><DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;Data.Win;System.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Keys>CompanyName=xxxxxxx;
FileDescription=**xxxxxxxx**;
FileVersion=5.12.1.0;
InternalName=;
LegalCopyright=2012 xxxxxx Services;LegalTrademarks=**xxxx**;
OriginalFilename=;
ProductName=**xxxx**;
ProductVersion=5.0;
Comments=</VerInfo_Keys>
</PropertyGroup>

4)更换 主演 带有文件中下方信息的条目 - 如果你找不到你需要再添加它的图标,虽然我发现在我的大多数项目中它都是作为一个单独的.ico文件夹

5)然后,您可以删除所有其他原始属性组条目,直至:

                            <ProjectExtensions>
                                            <Borland.Personality>Delphi.Personality.12</Borland.Personality>
                                            <Borland.ProjectType/>
                                            <BorlandProject>

2
2018-01-13 15:21



EMB为什么不修理它?!我在XE3上仍然有问题。 - FLICKER


“我在这个问题上开设的质量控制(99428)于11月7日关闭,标记为”在16.0.4256.43595版本中解决“。

唉,自最新版本16.0.4358.45540起,此问题尚未解决

如果从早期版本的Delphi迁移项目,它将在“所有配置”级别创建包含旧配置副本的版本资源。这很好。

它会完全忽略它 - 这是 真的很糟糕。直到测试的最后阶段我们才注意到我们所有的可执行文件都是在没有版权和商标信息的情况下构建的 - 它只是被忽略了。

唯一的解决方案是手动编辑上面的所有dproj文件。真的需要有人写一个工具来解决这个问题..它是相当机械的,我希望我有时间。

FinalBuilder听起来不错,但是对于XE2,每个开发人员2万美元之上的许可证需要3.5万美元,这会让我们的会计师心脏病发作......


1
2018-02-10 16:28



是的我同意。我需要真正重新创建我的DPROJ文件,因为在另一个长时间的调试会话中,我发现通过多个IDE的DPROJ不会远程调试。 - Brian Frost


我创建了一个应用程序,它将在转换后删除子构建配置版本信息... 当我打开一个旧项目时,我关闭它并运行该工具。 这将确保正确继承版本信息(Update 4无法解决此问题)。


0
2018-04-26 13:44



有趣。请问这个可以吗? - Brian Frost
无耻的观察插件和我自己的工具: delphi-divining.blogspot.co.uk - Brian Frost