हमारे पास एक बैच फ़ाइल है जो हमारी एमएसबिल्ड-आधारित बिल्ड प्रक्रिया को आमंत्रित करती है। सिंटेक्स:पावरहेल में बैच स्क्रिप्ट को कॉल करते समय मैं बराबर चिह्न कैसे पास करूं?
build App Target [ Additional MSBuild Arguments ]
आंतरिक रूप से, यह इस करता है:
msbuild.exe %1.msbuild /t:%2 %3 %4 %5 %6 %7 %8 %9
कौन सा MSBuild करने के लिए कॉल में परिणाम है कि इस तरह दिखेगा:
msbuild.exe App.msbuild /t:Target
जब किसी भी तर्क बराबर के चिह्न होता है, =
, पावरहेल पूरी तरह से इसे हटा देता है। मेरी बैच स्क्रिप्ट इसे कभी नहीं देखती है। यह मानक cmd.exe
कमांड प्रॉम्प्ट के साथ नहीं होता है।
, अगर मैं फोन
build App Target "/p:Property=Value"
इस MSBuild करने के लिए क्या पारित हो जाता है:
msbuild.exe App.msbuild /t:Target "/p:Property=Value"
मैं Powershell भागने की कोशिश की है:
msbuild.exe App.msmbuild /t:Target /p:Property Value
मैं इस उम्मीद चरित्र, मानक कमांड प्रॉम्प्ट एस्केप कैरेक्टर, और यहां तक कि मैंने जो सामान बनाया है:
build App Target "/p:Property=Value"
build App Target '/p:Property=Value'
build App Target /p:Property^=Value
build App Target /p:Property`=Value
build App Target /p:Property==Value
इसमें से कोई भी काम नहीं करता है। बराबर चिह्न प्राप्त करने या निकालने के लिए मैं क्या करूँ?
यह काम किया! मैंने सोचा कि मैंने उस संयोजन की कोशिश की है, लेकिन मुझे लगता है कि मैंने केवल एक ही उद्धरण की कोशिश की, दोहरे उद्धरणों के आसपास एकल उद्धरण नहीं। कभी-कभी पावरहेल काफी अजीब हो सकता है। –
समस्या यह है कि PowerShell निष्पादन योग्यों को पारित होने पर तर्कों का उद्धरण नहीं देता है। तो हालांकि PowerShell जानता है कि "/ p: Property = Value" एक स्ट्रिंग है, यह उद्धरण के बिना इसे पास करता है। यह निष्पादन योग्य इसे एक तर्क के रूप में नहीं देख सकता है। मुझे एक तर्क में उद्धरण शामिल करने के साथ एक ही समस्या थी, और मुझे उन्हें बचाना पड़ा। – JasonMArcher
@ जेसनमारर: सहमत हुए, लेकिन यह '=' के साथ अद्वितीय होने लग रहा था क्योंकि इससे बचने से कोई फर्क नहीं पड़ता। इसे आज़माएं और आप देखेंगे। –