2015-07-20 7 views
25

मैं सिर्फ अपनी मशीन पर .NET फ्रेमवर्क 4.6 स्थापित और फिर एक ConsoleApplication .NET फ्रेमवर्क 4.6 को लक्षित विजुअल स्टूडियो 2013स्ट्रिंग प्रक्षेप .NET फ्रेमवर्क 4.6

के साथ बनाया के साथ काम नहीं करता है मैंने लिखा में निम्नलिखित Main विधि:

string test = "Hello"; 
    string format = $"{test} world!"; 

लेकिन इस संकलन नहीं है। विजुअल स्टूडियो 2015 में ऐसा करना काम करता है।
क्यों?

+4

आपको वीएस2015 की आवश्यकता है, जो कि आपके लिए सौभाग्य से आज जारी होने की वजह से है! –

+1

@ डेविड अर्नो आप सी # 6 डब्ल्यू/वीएस2013 का उपयोग कर सकते हैं, आपको बस एक NuGet पैकेज की आवश्यकता है। [नीचे मेरा जवाब] देखें (http://stackoverflow.com/questions/31514767/string-interpolation-doesnt-work-with-net-framework-4-6/33179311#33179311)। – joelmdev

उत्तर

42

स्ट्रिंग इंटरपोलेशन एक सी # 6.0 सुविधा है, .NET Framework 4.6 में से एक नहीं है। वीएस 2013 सी # 6 का समर्थन नहीं करता है लेकिन वीएस 2015 करता है।

26

स्ट्रिंग इंटरपोलेशन वास्तव में एक सी # 6.0 सुविधा है, लेकिन सी # 6 वीएस2015 तक सीमित नहीं है।

आप Microsoft.Net.CompilersNuGet package के माध्यम से Roslyn कंपाइलर प्लेटफ़ॉर्म को लक्षित करके VS2013 में C# 6.0 भाषा सुविधाओं का लाभ उठाने वाले अनुप्रयोगों को संकलित कर सकते हैं।

मेरा अनुभव यह रहा है कि, इस पैकेज को स्थापित करने के बाद, संकलन के दौरान त्रुटि संदेश थोड़ा भ्रामक हो सकता है। यदि आपके पास संकलन त्रुटियां हैं जो सी # 6 से संबंधित नहीं हैं, तो आपको उन त्रुटि संदेशों और त्रुटि संदेशों को दिखाया जाएगा जो किसी भी सी # 6 फीचर्स से संबंधित अमान्य वाक्यविन्यास से संबंधित हैं, इस तथ्य के बावजूद कि अब आप उन्हें समर्थन करने वाले कंपाइलर को लक्षित कर रहे हैं।

उदाहरण के लिए

...

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.Title = "Home Page"; 
     var example = $"{ViewBag.Title}"; 
     ImASyntaxErrorWhatAmIWheresMySemicolonLOL 
     return View(); 
    } 
} 

संकलन के दौरान 4 त्रुटि संदेश में परिणाम होगा:

त्रुटि 1 अप्रत्याशित चरित्र '$'

त्रुटि 2 अमान्य एक्सप्रेशन 'शब्द'

त्रुटि 3; अपेक्षित

त्रुटि 4; अपेक्षित

पहले 3 त्रुटियां स्ट्रिंग इंटरपोलेशन का उपयोग करने वाली रेखा से संबंधित हैं, केवल अंतिम ; expected त्रुटि एक समस्या है। View वापस करने से पहले आपत्तिजनक रेखा को हटाएं और स्ट्रिंग इंटरपोलेशन संकलन त्रुटियां गायब हो जाती हैं और सब ठीक है।

+2

वीएस2013 में Rosyln के लिए NuGet पैकेज के बारे में अधिक जानकारी के लिए [यह उत्तर] देखें (http://stackoverflow.com/a/32010632/772086)। – Mike

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