2013-03-19 8 views
5

मैंने विजुअल स्टूडियो में अपने बंडल-प्रोजेक्ट पर कई कॉन्फ़िगरेशन बनाए हैं और मैं परिभाषित करना चाहता हूं कि कोड के कौन से टुकड़े प्रत्येक कॉन्फ़िगरेशन में शामिल किए जाने चाहिए। मेरा लक्ष्य कई बूटस्ट्रैपर्स प्राप्त करना है: उनमें से कुछ में पूर्वापेक्षाएँ शामिल होंगी और कुछ नहीं करेंगे। मैं कुछ ऐसा करने की कोशिश की:प्रीप्रोसेसर चर का उपयोग कर बंडल के कोड का प्रबंधन कैसे करें?

<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

हाँ, आप पहली बार संकलक के पूर्वप्रक्रमक के लिए MSBuild संपत्ति पारित करने के लिए की जरूरत है। आपके .wixproj में संपत्ति को सुरंग करने के लिए DefineConstants संपत्ति का उपयोग करें। डिफ़ॉल्ट मन्नत द्वारा प्रदान की .wixproj Configuration के लिए डिफ़ॉल्ट रूप से करता है, लेकिन अन्य संपत्तियों के लिए यह इस तरह दिखना चाहते हैं:

<PropertyGroup> 
    <DefineConstants>$(DefineConstants);MyNewVariable=$(MSBuildPropertyName)</DefineConstants> 
</PropertyGroup> 
अब जब कि MSBuild संपत्ति एक पूर्वप्रक्रमक चर आप निम्न कर सकते है

:

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

मूल रूप से, उपरोक्त आपका उदाहरण सही है सिवाय इसके कि आप प्रीप्रोसेसर चर नाम के var. भाग खो रहे हैं। preprocessor syntax in the documentation पर अधिक जानकारी।

+0

बहुत बहुत धन्यवाद, श्रीमान मैन्चिंग! समस्या यह थी कि सृजन के दौरान नई विन्यास मैंने डिफ़ॉल्ट से गुणों की प्रतिलिपि नहीं बनाई थी, जिसे वोटीव द्वारा बनाया गया था। अब यह बहुत अच्छा काम कर रहा है! – Nerielle

संबंधित मुद्दे