我正在尝试使用MSBuild / Delphi 2010编译EXE,我尝试了这个:
MSBuild.exe / t:Clean; Build / p:config = Release; ExtraDefines =“CodeTest”/property:FileVersion=1.0.0.15“D:\ MyProject \ MyFile.dproj”
已构建文件但未设置版本
无论如何都有什么不对?
答案 0 :(得分:3)
您的属性“FileVersion”在MSBuild会话中可用,但除非您有某个以某种方式使用它的任务或目标,否则它不会用于任何事情。您可能需要(如DHeffernan所说)创建代码使用的版本资源,或使用后编译工具将版本信息应用于您的exe或dll。
这个StackOverflow article列出了许多用于进行后编译的工具。
答案 1 :(得分:0)
这里的主要问题是FileVersion
"属性"是VerInfo_Keys
属性的CSV列表的一部分,但不是属性本身。
所以,我看到的解决方案是:
VersInfo_Keys
属性(CSV列表)我implemented这个MSBuild Inline Task(必须使用N.B。:.NET Framework 4.0及更高版本):
lib\MSBuildTasks\Delphi.VersionInfo.targets
文件中(在我的情况下是git子模块)添加到Delphi项目文件(例如delphi-project.dproj
):
<Import Project="lib\MSBuildTasks\Delphi.VersionInfo.targets" Condition="$(FileVersion)!='' and Exists('lib\MSBuildTasks\Delphi.VersionInfo.targets')"/>
条件&#34; FileVersion已设置&#34;是为了避免Delphi中的失败,因为后者使用不支持内联任务的.NET 3.5(因此,只有在使用MSBuild运行时才设置FileVersion)。
运行
msbuild delphi-project.dproj /t:build /p:FileVersion=A.B.C.D
我用于Android应用程序(使用Delphi XE7 / 10 Seattle)。只需VersionName
和VersionCode
&#34;属性&#34;使用而不是FileVersion
(N.B。Import
的条件已适当更改。
msbuild delphi-project.dproj /t:build /p:VersionName=A.B.C.D