1

MSBuild / Delphi 2010 を使用して EXE をコンパイルしようとしています。

MSBuild.exe /t:Clean;Build /p:config=Release;ExtraDefines="CodeTest" /property:FileVersion=1.0.0.15 "D:\MyProject\MyFile.dproj"

ファイルはビルドされていますが、バージョンが設定されていません

とにかく何が問題なのですか?

4

2 に答える 2

3

プロパティ「FileVersion」はMSBuildセッション内で使用できますが、それを何らかの方法で使用するタスクまたはターゲットがない限り、何にも使用されていません。(DHeffernanが言うように)コードが使用するバージョンリソースを作成するか、コンパイル後のツールを使用してバージョン情報をexeまたはdllに適用する必要があります。

このStackOverflowの記事には、コンパイル後の処理を実行するためのツールがいくつかリストされています。

于 2012-04-20T18:39:26.053 に答える
0

ここでの主な問題は、FileVersion「属性」がVerInfo_Keysプロパティの CSV リストの一部であり、プロパティ自体ではないことです。

だから、私に見られる解決策は次のとおりです。

  1. プロパティVersInfo_Keysの取得 (CSV リスト)
  2. Key=Value のペアに分割する
  3. FileVersion=... ペアの値を変更
  4. リストを CSV リストに結合します。

これをMSBuild Inline Taskで実装しました(注意: .NET Framework 4.0 以降を使用する必要があります)。

  1. 要点(上記)をlib\MSBuildTasks\Delphi.VersionInfo.targetsファイルに入れます(私の場合はgitサブモジュール)

  2. Delphi プロジェクト ファイルに追加します (例delphi-project.dproj: )。

    <Import Project="lib\MSBuildTasks\Delphi.VersionInfo.targets" Condition="$(FileVersion)!='' and Exists('lib\MSBuildTasks\Delphi.VersionInfo.targets')"/>

    「FileVersion が設定されている」という条件は、Delphi がインライン タスクをサポートしていない .NET 3.5 を使用しているため、Delphi での失敗を回避するためのものです (したがって、FileVersion は MSBuild で実行した場合にのみ設定されます)。

  3. 走る

    msbuild delphi-project.dproj /t:build /p:FileVersion=A.B.C.D

Android アプリにも同じものを使用します (Delphi XE7/10 Seattle を使用)。というよりもVersionNameVersionCode「プロパティ」をそのまま使用しますFileVersion(NBImportの条件は適切に変更されます)。

msbuild delphi-project.dproj /t:build /p:VersionName=A.B.C.D

于 2016-07-29T08:22:43.907 に答える