C#7 स्थानीय फ़ंक्शन अपेक्षा के अनुरूप काम नहीं कर रहा है और कोई त्रुटि प्रदर्शित नहीं की जा रही है



asp.net .net (1)

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

  • एक्सेल
  • शब्द
  • पावर प्वाइंट
  • पीडीएफ
  • 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;
   }
}

जैसा कि आप देख सकते हैं कि यह बहुत सरल है और कुछ भी फैंसी नहीं करता है। जैसा कि मैं केवल एक ही स्थान पर इसका उपयोग कर रहा हूं, मैंने स्थानीय फ़ंक्शन के नए C # 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 में यह देखने के लिए जाँच करता ErrorList कि क्या कोई त्रुटि है तो मुझे कोई नहीं मिलता है जैसा कि आप नीचे देख सकते हैं।

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

this उत्तर को देखकर ऐसा लगता है कि C # 7 की सभी विशेषताएं .NET 4.5 पर काम करना चाहिए


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

जैसा कि यह पैकेज विवरण कहता है:

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

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





c#-7.0