2013-03-19 19 views
5

Visual Studio'daki paket projemde çeşitli yapılandırmalar oluşturdum ve her yapılandırmaya hangi kod parçalarının dahil edilmesi gerektiğini tanımlamak istiyorum. Amacım birkaç önyükleyiciyi almak: Bazıları önkoşulları içerecek ve bazıları olmayacak. Ben böyle bir şey denedim:Ön işlemci değişkenlerini kullanarak Bundle kodu nasıl yönetilir?

<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?> 

Ama tabii ki .. herhangi değişkene bağlı Demet paketlerin zincirine dahil edilecek kod hangi fragmanları yönetmek mümkün mü doğru değil? Teşekkür ederim.

cevap

4

Evet, öncelikle MSBuild özelliğini derleyicinin önişlemcisine iletmeniz gerekir. .wixproj öğesinde, özelliği üzerinden tünel yapmak için DefineConstants özelliğini kullanın. Adak tarafından sağlanan varsayılan .wixproj Configuration için varsayılan olarak yapar ancak diğer özellikler için bu benzeyecektin:

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

Şimdi MSBuild Mülkiyet aşağıdakileri yapabilirsiniz bir önişlemci değişken olduğunu:

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

Temel olarak, yukarıdaki örnek, önişlemci değişken adının var. bölümünün eksik olması dışında doğrudur. preprocessor syntax in the documentation hakkında daha fazla bilgi.

+0

Çok teşekkür ederim BayMensching! Sorun, yaratılış sırasında yeni yapılandırmaların Votive tarafından oluşturulan varsayılan değerlerden kopyalanmadığıydı. Şimdi harika çalışıyor! – Nerielle

İlgili konular