Roslyn

2012-04-26 17 views
19

का उपयोग कर संकलन-समय स्रोत कोड संशोधन सीआई सर्वर पर MSBuild कार्य के भीतर Roslyn का उपयोग करके संकलन से पहले स्रोत कोड को संशोधित करना संभव है? मैं वीएस में जो चाहता हूं वह करने में सफल रहा हूं लेकिन मुझे आश्चर्य है कि वीएस के बाहर यह संभव है या नहीं। वर्तमान में मैं वर्कस्पेस एपीआई और कंपाइलर एपीआई देख रहा हूं और वे इसे प्राप्त करने के लिए सही उपकरण प्रतीत होते हैं, लेकिन मुझे अभी भी यकीन नहीं है कि यह संभव है? विशेष रूप से मैं एमएसबिल्ड को अपने काम जारी रखने की अनुमति देने के लिए किए गए परिवर्तनों को वापस करने के बारे में चिंतित हूं।Roslyn

+1

अच्छा सवाल, हाल ही में इस तरह के सामान के बारे में सोच रहा था। –

उत्तर

9

यह निश्चित रूप से एक परिदृश्य है जिसे हम सोच रहे हैं। आज कुछ समस्याएं हैं जो इसे थोड़ा मुश्किल बनाती हैं:

  1. आप प्रोजेक्ट/समाधान लोड करने के लिए वर्कस्पेस एपीआई का उपयोग नहीं कर सकते क्योंकि आप पहले ही एमएसबिल्ड के अंदर हैं।
  2. नियमित कंपाइलर एपीआई का उपयोग करने के लिए, आपको स्वयं को एक संकलन बनाने की आवश्यकता है जो काम का एक गुच्छा हो सकता है।

भविष्य में, हम "एक सीएससी/वीबीसी कमांड लाइन स्ट्रिंग से वर्कस्पेस बनाएं" प्रदान करना चाहते हैं, जो इसे बहुत आसान बना देगा।

इस पर कुछ पिछली चर्चा के लिए Hooking into the compiler (csc.exe or vbc.exe) itself और Problem with using Roslyn in a MS Build Task पर एक नज़र डालें।

+0

धन्यवाद, केविन आपकी टीम से नई रोज़लिन सुविधाओं की प्रतीक्षा कर रहे हैं! –

+0

मुझे पता है कि यह 2012 से है। क्या इसके बारे में कोई खबर है? क्या अब कोई आसान तरीका है? – riki

1

मैं नहीं किया है व्यक्तिगत रूप से यह, परीक्षण करने के लिए सक्षम किया गया (इसलिए यदि आप एक टिप्पणी के रूप में इस "जवाब" व्यवहार करेगा), लेकिन रोसलिन के बारे में सामान पढ़ने, विशेष रूप से this ब्लॉग प्रविष्टि, ऐसा लगता है कि यह possible होना चाहिए (देखो "रिवाइट" पैराग्राफ के लिए।

जाहिर है, आप स्रोत से एक वाक्यविन्यास पेड़ (मुझे लगता है कि संकलक के लिए बहुत आश्चर्यजनक नहीं) बना सकते हैं, फिर एपीआई का उपयोग करके इसे संशोधित करें, और आखिर में इसे एक स्ट्रिंग/फ़ाइल पर वापस लिखें या जो भी हो।

रोज़लिन सिंटैक्स पेड़ों के बारे में MSDN को अवधारणात्मक रूप से देखें, और यह walkthrough "सिंटेक्स परिवर्तन" के बारे में देखें।

2
Problem with using Roslyn in a MS Build Task पर सवाल के बारे में

,

public class MyTask : Task 

AppDomainIsolatedTask के लिए कार्य बदल रहा त्वरित सुधार है। मेरे पास msdn खाता नहीं है इसलिए मैं इसे यहां पोस्ट करूंगा। उम्मीद है कि यह मदद कर सकता है।