5

Visual Studio でバンドル プロジェクトにいくつかの構成を作成しましたが、各構成に含める必要があるコードのフラグメントを定義したいと考えています。私の目的は、いくつかのブートストラッパーを取得することです。それらには前提条件が含まれるものと含まれないものがあります。私は次のようなものを試しました:

<PackageGroup
       Id="Prerequisites">
      <?if $(Configuration)='Release'?>
      <ExePackage
        Id="Netfx4Client"
        Cache="yes"
        Compressed="yes"
        PerMachine="yes"
        Permanent="yes"
        Vital="yes"
        SourceFile=".\SupportFiles\dotNetFx40_Client_x86_x64.exe"
        DetectCondition="NETFRAMEWORK40CLIENT OR (VersionNT64 AND NETFRAMEWORK40CLIENTX64)"
        InstallCondition="(v4.0.30319 > NETFRAMEWORK40CLIENT OR NOT NETFRAMEWORK40CLIENT)  OR (VersionNT64 AND v4.0.30319 > NETFRAMEWORK40CLIENTX64 OR NOT NETFRAMEWORK40CLIENTX64)"
        InstallCommand="/q /norestart  /log [TempFolder]\dotnetframework4.log"/>
<?endif?>

しかし、もちろんそれは正しくありません.変数に応じて、バンドルのパッケージのチェーンに含まれるコードの断片を管理することは可能ですか? ありがとうございました。

4

1 に答える 1

4

はい、最初に MSBuild プロパティをコンパイラのプリプロセッサに渡す必要があります。.wixproj で、プロパティを使用してDefineConstantsプロパティをトンネルします。Votive が提供するデフォルトの .wixproj はデフォルトでこれを行いますConfigurationが、他のプロパティの場合は次のようになります。

<PropertyGroup>
   <DefineConstants>$(DefineConstants);MyNewVariable=$(MSBuildPropertyName)</DefineConstants>
</PropertyGroup>

MSBuild プロパティがプリプロセッサ変数になったので、次の操作を実行できます。

<?if $(var.Configuration)="Release" ?>
    Stuff to conditionally compile out
<?endif?>

var.基本的に、プリプロセッサ変数名の一部が欠落していることを除いて、上記の例は正しいです。ドキュメントのプリプロセッサ構文の詳細。

于 2013-03-19T14:06:42.207 に答える