2017-07-20 6 views
5

GetAssemblyIdentity कार्य मुझे केवल असेंबलीवर्सन लौटाता है, न कि विधानसभा सूचना।MSBuild में असेंबली से असेंबली इन्फॉर्मेशन वर्जन प्राप्त करने का सही तरीका क्या है?

मैं विधानसभाInfo.cs को पार्स कर सकता हूं, जैसा कि यहां Reading AssemblyInformationalVersion value from AssemblyInfo file with RegEx द्वारा सुझाया गया है लेकिन मुझे नहीं लगता कि यह इष्टतम समाधान है।

+0

सही? आपके उपयोगकेस पर निर्भर करता है। आपका प्रश्न असेंबली से पढ़ना कहता है, जो लिंक आप प्रदान करते हैं वह इसे AssemblyInfo.cs से पढ़ता है। आपका इरादा क्या है? –

+0

मेरा इरादा असेंबली से पढ़ना है। मुझे नहीं लगता कि RegExp के साथ कुछ पार्सिंग इष्टतम समाधान – Leotsarev

+0

बस स्पष्ट होना है: आप असेंबली इन्फॉर्मेशन वर्जन को बाइनरी असेंबली फ़ाइल से या AssemblyInfo.cs स्रोत फ़ाइल से पढ़ना चाहते हैं? आपका प्रश्न इंगित करता है कि दोनों मामले हो सकते हैं। –

उत्तर

1

यदि आप वास्तविक असेंबली बाइनरी से AssemblyInformationVersion मान पढ़ना चाहते हैं, तो आपका प्रश्न, जैसा कि वर्तमान में लिखा गया है, सुझाव देता है कि यह मामला है (GetAssemblyIdentity -task पर संकेत)।

यदि ऐसा है, तो बस FileVersionInfo.GetVersionInfo का उपयोग करें और ProductVersion संपत्ति पढ़ें। MSBuild के अंदर से इसे आमंत्रित करने के लिए आपको शायद एक छोटा सा कस्टम कार्य चाहिए, जो वह करता है।

आंतरिक रूप से, सी # कंपाइलर turns the AssemblyInformationalVersion into यही है।

यदि आपको इसके मूल्य के लिए स्रोत कोड (उदाहरण के लिए AssemblyInfo.cs) का विश्लेषण करना है (जो कि एक पूरी तरह से अलग बात है!) और आपके द्वारा लिंक किए गए रेगेक्स-दृष्टिकोण आपके उद्देश्यों के लिए बहुमुखी नहीं है, तो आपके पास होगा Roslyn, या कुछ अन्य तकनीक का उपयोग करने का सहारा लेना जो वास्तव में सी # को समझता है और स्रोत कोड को सही ढंग से पार्स कर सकता है।

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