2012-12-12 6 views
6

एमएसबिल्ड इंजन '$ ([MSBuild] :: जोड़ें ($ (OldRevision), 1)) कथन के लिए MSB4186 त्रुटि देता है। मैं here से एक उदाहरण का उपयोग कर रहा है, लेकिन यह मेरे लिए काम नहीं करता है:[MSBuild] :: आमंत्रण रिटर्न त्रुटि जोड़ें MSB4186

<CreateProperty Value="$([MSBuild]::Add($(OldRevision), 1))"> 
    <Output 
     TaskParameter="Value" 
     PropertyName="NewRevision" /> 
</CreateProperty> 

मुझे आश्चर्य है कि क्या के लिए था उचित सिंटैक्स है:

error MSB4186: Invalid static method invocation syntax: 
"[MSBuild]::Add($(OldRevision), 1)". Input string was not in a correct format. 
Static method invocation should be of the form: $([FullTypeName]::Method()), 
e.g. $([System.IO.Path]::Combine(`a`, `b`)) 

यहाँ मैं क्या प्रदर्शन करने के लिए कोशिश कर रहा हूँ है यह

ps हां, मैं MSBuild 4.5

+0

मैं एक ही समस्या है। मुझे लगता है कि यह एक स्ट्रिंग की तरह व्यवहार किया जा रहा '' (OldRevision) 'के साथ कुछ करना है। मेरे लिए निम्नलिखित कार्य करता है: '<संदेश पाठ =" जोड़ना: $ ([एमएसबिल्ड] :: जोड़ें (2,3)) "/>', लेकिन जब मैं गुणों के साथ 2 और 3 को प्रतिस्थापित नहीं करता हूं। – vegemite4me

उत्तर

1

का उपयोग कर रहा हूं, मुझे लगता है कि आपको यह संपत्ति वाक्यविन्यास सही मिला है, यह केवल CreateProperty कार्य में काम नहीं कर रहा है। CreateProperty फ़ंक्शन को बहिष्कृत किया गया है, इसका उपयोग करने के बहुत कम कारण हैं।

यह सरल संपत्ति वाक्य रचना मेरे लिए काम करता है:

<PropertyGroup> 
    <NewVersion>$([MSBuild]::Add($(OldVersion), 1))</NewVersion> 
</PropertyGroup> 

इसके अलावा इस रूप में अच्छी तरह से काम करता है (किसी भी लक्ष्य के अंदर):

<Message Text="OldVersion=$(OldVersion), NewVersion=$([MSBuild]::Add($(OldVersion), 1))" /> 
+0

दुर्भाग्य से यह मेरे लिए भी काम नहीं करता है। वही गलती तो, मैं बस 'पुराना अच्छा' 'संस्करण' कार्य में लौट आया –