11

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

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

4

5 回答 5

9

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

于 2012-03-28T23:14:56.100 回答
2

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

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

于 2011-11-09T16:58:24.200 回答
2

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

如果您在 Delphi XE2 中第一次打开它时将 Target 更改为 ALL Configurations 似乎没问题。然后一旦它加载了下拉目标并仅单击粗体条目以复制版本信息。如果您不小心单击了非粗体条目,则该文本将设置为默认值并在 .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>
于 2012-01-13T15:21:54.990 回答
1

“我在此问题 (99428) 上打开的 QC 已于 11 月 7 日关闭,并标记为“在版本 16.0.4256.43595 中已解决”。

唉,从最新版本 16.0.4358.45540 开始,这还没有修复

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

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

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

FinalBuilder 听起来不错,但在 XE2 每位开发人员 2000 美元之上的 3500 美元许可将使我们的会计师心脏病发作……

于 2012-02-10T16:28:11.770 回答
0

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

于 2012-04-26T13:44:52.867 回答