2010-01-25 17 views
5

मैं एक MSBuild संपत्ति के लिए एक डिफ़ॉल्ट मान सेट करने की कोशिश कर रहा हूँ। 'यह एमएसबिल्ड स्क्रिप्ट इस संपत्ति को जिस तरह से उम्मीद करता है, क्यों सेट नहीं करता है?

<Choose> 
    <When Condition="..something.."> 
     <PropertyGroup> 
      ... 
      <MySetting>true</MySetting> 
     <PropertyGroup> 
    </When> 
    ... 
</Choose> 

अगर हालत सही नहीं है, तो MySetting होगा': मैं इस के साथ शुरू कहो। तो क्या यह झूठी नहीं होनी चाहिए? फिर भी जब मैं दृश्य स्टूडियो में इस परियोजना लोड

<PropertyGroup Condition="$(MySetting)"> 
    ... 
</PropertyGroup> 

:

<PropertyGroup> 
    <MySetting Condition="'$(MySetting)'==''">false</MySetting> 
</PropertyGroup> 

बाद में, मैं == 'सही' के लिए परीक्षण करने के लिए बिना एक सशर्त में MySetting उपयोग करने के लिए, इस तरह करना चाहते हैं यह शिकायत करता है कि निर्दिष्ट स्थिति "$ (माइसेटिंग)" बूलियन के बजाय "" का मूल्यांकन करती है।

तो ऐसा लगता है कि या तो मेरी स्थिति जो '' को गलत करने के लिए संपत्ति को असाइन करने के लिए जांचती है, गलत है। मैं क्या गलत कर रहा हूं?

उत्तर

6

MSBuild में, आप तार के साथ काम कर रहे हैं ताकि आप false के बजाय '' मिलता है ... अगर आप 'false' करने के लिए इसे लागू हो और कमांड लाइन के माध्यम से ओवरराइड करना चाहते, बस में अपने मौजूदा हालत ब्लॉक के ऊपर एक संपत्ति समूह घोषित स्क्रिप्ट:

<PropertyGroup> 
    <MySetting>false</MySetting> 
</PropertyGroup> 

आपकी हालत ब्लॉक नीचे इसे सही पर सेट कर सकते हैं, या आप भी कमांड लाइन के माध्यम से यह निर्धारित कर सकते हैं, इस तरह:

MSBuild.exe MyMSBuildFile.csproj /p:MySetting=true 
+0

यह डिफ़ॉल्ट सेट करने का एक बेहतर तरीका है। मैं इसके बजाए ऐसा करूंगा, धन्यवाद। लेकिन मुझे अभी भी समझ में नहीं आता है कि मूल प्रश्न में कोड का मध्य ब्लॉक क्यों संपत्ति को झूठी नहीं लगाता है। मैं संपत्ति को गलत करने के लिए '' के खिलाफ परीक्षण कर रहा हूं। वह क्यों नहीं चलता है? – scobi

+0

@ स्कॉट बिलास: क्या आप ' झूठी' रन के बाद कह रहे हैं, मान अभी भी ''' है? संकलक के अनुसार –

+0

यूप। ऐसा लगता है कि वह संपत्ति सेट कभी नहीं होता है। – scobi

3

आप बेहतर गुणों के लिए चूक घोषित करने के लिए चाहते हैंn चुना का उपयोग कर के रूप में संपत्ति पर यह करने के लिए है:

<PropertyGroup> 
    <MySetting Condition=" '$(MySetting)'=='' ">true</MySetting> 
</PropertyGroup> 
भी स्थिति हमेशा 'में' छोड़ दिया और सही पक्ष लपेट के लिए

, भले ही आप क्या bool मान होना चाहिए के साथ काम कर रहे हैं। तो अपना दूसरा प्रॉपर्टी ग्रुप इस तरह दिखने के लिए बदलें:

<PropertyGroup Condition=" '$(MySetting)'=='true' "> 
</PropertyGroup> 
संबंधित मुद्दे