2017-04-03 5 views
39

मेरे पास एक Asp.Net MVC ऐप फ्रेमवर्क संस्करण .NET 4.5 के साथ चल रहा है और मैं VS2017 समर्थक संस्करण का उपयोग कर रहा हूं। उपयोगकर्ता सहित संलग्नक अपलोड कर सकते हैं लेकिन सीमित नहीं:सी # 7 स्थानीय फ़ंक्शन अपेक्षित काम नहीं कर रहा है और कोई त्रुटि प्रदर्शित नहीं की जा रही है

  • एक्सेल
  • वर्ड
  • PowerPoint
  • पीडीएफ
  • jpeg
  • png

तो मैं एक private कार्य हो जो निम्नानुसार है:

private string ImageExtension(string path) 
{ 
    string noImagePath = HttpContext.Current.Server.MapPath("~/Content/images/Template/No-Image-Available-100x100.jpg"); 
    string fileExtension = System.IO.Path.GetExtension(path); 
    switch (fileExtension) 
    { 
    case ".jpg": 
    case ".jpeg": 
    case ".gif": 
    case ".png": 
     return path; 
    default: 
     return noImagePath; 
    } 
} 

जैसा कि आप देख सकते हैं कि यह बहुत आसान है और कुछ भी फैंसी नहीं करता है। चूंकि मैं केवल एक ही स्थान पर इसका उपयोग कर रहा हूं, मैंने स्थानीय फ़ंक्शन की नई सी # 7 सुविधा का उपयोग करने के बारे में सोचा था। इसलिए मैं आगे बढ़ गया हूं और अपना मुख्य कार्य निम्नानुसार बनाया है और इसके अंदर ImageExtension(string path) जोड़ा है।

public void BugInfo(HttpPostedFileBase file) 
{ 
    if(file != null && file.ContentLength > 0) 
    { 
    string fileName = file.FileName; 
    string directoryPath = "directory path"; 

    //save path of 
    string savePath = System.IO.Path.Combine(directoryPath, fileName); 
    string testString = ImageExtension(savePath); 

    string ImageExtension(string path) 
    { 
     string noImagePath = HttpContext.Current.Server.MapPath("~/Content/images/Template/No-Image-Available-100x100.jpg"); 
     string fileExtension = System.IO.Path.GetExtension(path); 
     switch (fileExtension) 
     { 
      case ".jpg": 
      case ".jpeg": 
      case ".gif": 
      case ".png": 
      return path; 
      default: 
      return noImagePath; 
     } 
     } 
    } 
    //save values to db here 
} 

उपरोक्त कोड के साथ मेरी परियोजना बिना किसी त्रुटि के बनाता है। जैसे ही मैंने F5 या Ctrl + F5 मारा मैं अगर मैं ErrorList में जाँच अगर वहाँ किसी भी त्रुटि मैं बिल्कुल भी नहीं मिल के रूप में आप नीचे देख सकते हैं देखने के लिए निम्न त्रुटि स्क्रीन

enter image description here

मिलता है।

enter image description here

कोई मुझे बता सकते हैं जहाँ मैं गलत कृपया जा रहा हूँ। क्या मुझे सी # 7 सुविधाओं का उपयोग करने के लिए किसी भी सेटिंग्स को बदलने या किसी भी अतिरिक्त डीएलएल को शामिल करने की आवश्यकता है।

this जवाब यह सी # 7 सुविधाओं के सभी तरह लगता है को देखते हुए .NET 4.5

+7

आउटपुट फलक/विंडो में देखने का प्रयास करें, कॉम्बो बॉक्स में संकलन का चयन करें। शायद त्रुटि संदेश दर्ज किया गया है। – xanatos

+2

साथ ही साथ @xanatos ने कहा, त्रुटि सूची फलक के शीर्ष पर एक ड्रॉपडाउन है जो आपको वहां प्रदर्शित करने के लिए अलग-अलग स्रोत चुनने देता है (बिल्ड/इंटेलिजेंस)। –

+0

@xanatos धन्यवाद, मैं एक नज़र रखूंगा और देख सकता हूं कि इससे मदद मिलती है या नहीं। – Izzy

उत्तर

47

पर काम करना चाहिए आप नवीनतम संस्करण के लिए "Microsoft.Net.Compilers" नाम nuget पैकेज को अद्यतन करने की जरूरत है। सबसे अधिक संभावना है कि आपके प्रोजेक्ट में संस्करण 1.3.2 स्थापित है लेकिन सी # 7 सुविधाओं का उपयोग करने के लिए आपको 2.0.1 की आवश्यकता है। वैकल्पिक रूप से - आप इस पैकेज को बिल्कुल हटा सकते हैं (एक साथ संकुल के साथ जो उस पर निर्भर करता है) - फिर यह भी काम करेगा, क्योंकि यह आपके स्थापित कंपाइलर का उपयोग करेगा, लेकिन मैं ऐसा करने की अनुशंसा नहीं करता हूं।

इस पैकेज विवरण के रूप में कहते हैं:

नेट संकलनकर्ता पैकेज। इस पैकेज को संदर्भित करने से प्रोजेक्ट को सी # और विजुअल पैकेज में निहित मूल कंपाइलर का उपयोग करके बनाया जा सकता है, किसी भी सिस्टम स्थापित संस्करण के विपरीत।

इसलिए यही कारण है कि यह आपके लिए सी # 6 कंपाइलर का उपयोग करता है।

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