ভিজ্যুয়াল স্টুডিও 2017 এবং সি # 7.0 ব্যবহার করে কোনও পদ্ধতি থেকে টুপলকে ফিরিয়ে দিতে অক্ষম


102

আমি ভিজ্যুয়াল স্টুডিও 2017 সম্প্রদায় ইনস্টল করেছি যা এক সপ্তাহ আগে প্রকাশিত হয়েছিল এবং আমি সি # 7 এর নতুন বৈশিষ্ট্যগুলি অন্বেষণ করতে শুরু করেছি।

সুতরাং আমি একটি সাধারণ পদ্ধতি তৈরি করেছি যা দুটি মান প্রদান করে:

public class Program
{
    public static void Main(string[] args)
    {
        (int sum, int count) a = ReturnTwoValues();
    }

    static (int sum, int count) ReturnTwoValues() => (1, 1);
}

সংকলক একটি ত্রুটি উত্পন্ন করছে:

ত্রুটি CS8137 টি শ্রেণি বা সদস্যকে সংজ্ঞায়িত করতে পারে না যা টিপলগুলি ব্যবহার করে কারণ সংকলকটির জন্য 'সিস্টেম.রুনটাইম.কম্পাইলার সার্ভিসেস.টুপ্লিলমেন্টনামস্যাট্রিবিউট' টাইপ করা যায়নি। আপনি কি রেফারেন্স মিস করছেন?

আমি এই নামের সাথে ফ্রেমওয়ার্কে একটি রেফারেন্স সন্ধান করার চেষ্টা করেছি, তবে কোনও ভাগ্য ছাড়াই!

সি # 7.0 বৈশিষ্ট্যগুলি ব্যবহার করতে যদি আমাদের অতিরিক্ত জিনিসগুলির প্রয়োজন হয়, তবে প্রতিটি প্রকল্পের জন্য আমাদের এটি করা খুব আশ্চর্যের বিষয় ?!


উত্তর:


130

আমি শুধু এই পৃষ্ঠার মাধ্যমে দৌড়ে Roslyn যা এই কাজ করে তার জন্য নিম্নলিখিত পদক্ষেপ বর্ণনা

  1. একটি সি # প্রকল্প শুরু করুন
  2. System.ValueTuple নিউগেট থেকে প্যাকেজটিতে একটি রেফারেন্স যুক্ত করুন (প্রাক রিলিজ)

এখানে চিত্র বর্ণনা লিখুন

এই পদক্ষেপগুলি অনুসরণ করে, এখন এটি কাজ করছে। তবে এটি সত্যিই খুব অদ্ভুত যে আমাদের শুরু হওয়া প্রতিটি প্রকল্পের জন্য এটি করা দরকার! আশা করি আমরা যখন অফিসিয়াল প্রকাশে পৌঁছে যাব তখন এটি ঠিক হয়ে গেছে!


4
পরবর্তী প্রকাশে থাকা একটি জিনিস হ'ল একটি কোড ফিক্স যা আপনাকে সহজেই প্যাকেজ যুক্ত করতে দেয়।
সুইভ

7
এই সমাধানটি আমাকে সহায়তা করেছিল; এমনকি মার্চ 2017 এ ডাউনলোড করা ভিএস2017 পেশাদারের সম্পূর্ণ প্রকাশ সংস্করণ সহ!
নিজ

4
খুব বিরক্ত যে এটি অফিসিয়াল ভাষায় নয়। এটি ঠিক হওয়ার সাথে একই সমস্যার মধ্যে পড়ে। তারা এটিকে একটি সি # 7 ভাষা বৈশিষ্ট্য হিসাবে বিপণন করছে যখন বাস্তবে এটি কোনও সি # 7 এক্সটেনশন বৈশিষ্ট্য। আমার ধারণা, আপনি যখন নতুন রোজলিন সংকলক (যা আমি একজন অনুরাগী) ব্যবহার করছি তখন জিনিসগুলি এমনভাবে লোমশ হয়ে উঠতে পারে ... কোনওভাবেই, এটি একটি দুঃখজনক পার্শ্ব প্রতিক্রিয়া আইএমও।
মাইকেল পকেট দ্বিতীয়

10
@ মিশেল প্যাকেট III আমি মনে করি কারণ এটি NET ফ্রেমওয়ার্কে বিদ্যমান থাকার জন্য এই বৈশিষ্ট্যটির সংঘাত (গুলি) প্রয়োজন এবং তারা এখনও একটি নতুন প্রকাশ করেনি না, এজন্য একটি সাময়িক সমাধান হ'ল এটি একটি নুয়েট প্যাকেজ হিসাবে অন্তর্ভুক্ত করা উচিত। পরবর্তী .NET ফ্রেমওয়ার্ক প্রকাশিত হলে, এই বৈশিষ্ট্যের জন্য প্রয়োজনীয় ক্লাসগুলি ইতিমধ্যে অন্তর্নির্মিত হওয়া উচিত। যদি তা না হয়, তবে এটি এমন একটি সমস্যা যার কিছু ব্যাখ্যা দরকার।
জেইন মক্কি

12
মাত্র নেট নেট ফ্রেমওয়ার্ক 4.7 এ আপগ্রেড করার পরে আমি এই ত্রুটিটি পেয়েছি, দেখা যাচ্ছে ভ্যালুটাইপল এখন 4.7 এর অংশ, সুতরাং টিপল প্যাকেজটি আনইনস্টল করা আমার পক্ষে সমাধান ছিল
chad.mellor

59

আমি ইনস্টল করার পরে এই ত্রুটিটি পেতে শুরু করেছি। নেট 4.7 ফ্রেমওয়ার্ক, এবং আমার প্রকল্পকে লক্ষ্য হিসাবে পরিবর্তন করেছে। নেট 4.7

ValueTuple এখন .NET 4.7 এর সাথে অন্তর্ভুক্ত করা হয়েছে, সুতরাং আপনাকে মানটি নিজেই মান উল্লেখ করতে হবে না।

সংকলনের ত্রুটিটি সংশোধন করতে আমাকে যা করতে হয়েছিল তা হ'ল আমার প্রকল্পের রেফারেন্সগুলি থেকে System.ValueTuple এর রেফারেন্সটি সরিয়ে ফেলা।


4
দুর্দান্ত, আপনার পরামর্শ অনুসরণ করে, এখন এটি .NET 4.7 এ অন্তর্ভুক্ত রয়েছে, আর নিউগেট থেকে আর ইনস্টল করার দরকার নেই। ধন্যবাদ
গেঞ্জজুন উ

আমরা ইতিমধ্যে। নেট এ ব্যবহার করতে পারি? এটা তোলে জন্য .net 4.7.2 2019. আমি লক্ষ্য এর
user4951

2

.NET 4.6.2 থেকে .NET 4.7.2 এ আপগ্রেড করার সাথে সাথে আমি এই ইস্যুটি জুড়ে এসেছি। দুর্ভাগ্যক্রমে, আমি প্যাকেজ রেফারেন্সটি মুছে ফেলতে পারিনি System.ValueTupleকারণ আমি ব্যবহার করি এমন আরও একটি নুগেট প্যাকেজ তার উপর নির্ভর করে।

অবশেষে আমি মূল কারণটি সনাক্ত করতে সক্ষম হয়েছি: mscorlib.dllপ্রকল্প ফোল্ডারে (একটি প্রকাশ অপারেশনের আউটপুট) আশেপাশে একটি নেট নেট 6.6.২ সংস্করণ ছিল এবং এমএসবাইল্ড অফিসিয়াল .NET 4.7.2 রেফারেন্সের পরিবর্তে এই সমাবেশটি রেফারেন্স করার সিদ্ধান্ত নিয়েছে সমাবেশ মধ্যে অবস্থিত C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2

System.ValueTuple .NET 4.7-এ প্রবর্তিত হয়েছে এর কারণে, এমএসবিল্ড সংকলনটি ব্যর্থ হয়েছে কারণ এটি নেট 4.6.2 এর রেফারেন্স অ্যাসেমব্লিতে টাইপটি খুঁজে পায়নি।


2

.NET 4.7.2 এ আপডেট করার পরেও আমি এই ত্রুটি পেয়েছি এবং নুগেট প্যাকেজগুলি ব্যবহার করে এটি পুনরায় ইনস্টল করে এটি ঠিক করতে সক্ষম হয়েছি:

Update-Package -Reinstall
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.