2008-09-28 9 views
13

में विशिष्ट फ़्रेमवर्क संस्करण को लक्षित करने के लिए आप csc.exe C# कंपाइलर के लिए कमांड लाइन आवेदक (उदा।, .csproj फ़ाइल के माध्यम से और MSBUILD इंजन के माध्यम से नहीं जा रहे हैं) के माध्यम से लक्ष्य फ्रेमवर्क संस्करण कैसे निर्दिष्ट करते हैं?csc.exe

उदाहरण के लिए, सी # 3.0 सीएससीएक्सई कंपाइलर का उपयोग करके, आप 2.0 .net फ्रेमवर्क को लक्षित करने के लिए आईएल को कैसे संकलित करते हैं?

उत्तर

4

सी # 3 कंपाइलर के विशिष्ट मामले में, तब तक कोई समस्या नहीं है जब तक आप किसी भी असेंबली या प्रकार का उपयोग नहीं करते हैं जो .NET 2.0 में नहीं हैं - आईएल समान है (जैसा कि विपरीत है उदाहरण के लिए 1.1 लक्ष्यीकरण)।

इसके अलावा, आप/noconfig/nostdlib का उपयोग कर सकते हैं और फिर स्पष्ट रूप से .NET 2.0 असेंबली (उदाहरण के लिए c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 में) का स्पष्ट रूप से संदर्भित कर सकते हैं। ऐसा लगता है कि/lib कमांड लाइन विकल्प आपको संदर्भों को देखने के लिए निर्देशिका निर्दिष्ट करने से थोड़ा आसान बना सकता है, लेकिन मैंने इसे स्वयं नहीं किया है।

+0

यह काम करता है (जाहिर तौर पर 2.0 libs का संदर्भ देता है) लेकिन पहला सुझाव यह है कि आईएल एक जैसा है) इस पर भरोसा करने वाला पहला सुझाव मुझे 'खुलासा' छोड़ देगा (उदाहरण के लिए, कोई संकलन-समय चेतावनी नहीं है कि मैं 2.0-केवल असेंबली से भटक गए थे)। – sbohlen

+0

हां, यह आपको इसके संपर्क में छोड़ देगा। .NET 2.0 और 2.0SP1 के बीच अंतर के बारे में भी सावधान रहें (उदा। डेटटाइम ऑफसेट) - मुझे नहीं पता कि आप आसानी से संदर्भ के लिए "वेनिला" 2.0 असेंबली ढूंढ पाएंगे या नहीं। बेशक, आप उन्हें एक गैर-एसपी 1 मशीन से कॉपी कर सकते हैं ... –

+0

हाँ, मुझे लगता है कि जहां तक ​​मैं कह सकता हूं, यह ऐसा कुछ है जिसे मुझे फिर से देखना होगा: एमएसबीयूआईएलडी को निकाल दिया जाने पर इसका 'लागू' कैसे होता है .csproj फ़ाइल के खिलाफ बंद करें (जहां लक्ष्य एफडब्ल्यू संस्करण का अनुमान लगाने के लिए यह संभव है)। ऐसा लगता है कि कोई बुलेटप्रूफ csc.exe विकल्प मेरे लिए उपलब्ध नहीं है। – sbohlen

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