c# - সি # যদি / তারপর ডিবাগ বনাম রিলিজের জন্য নির্দেশাবলী




6 Answers

আপনার কোডে #define DEBUG । পূর্বনির্ধারিত বিল্ডের জন্য কনফিগারেশন নির্মাণে প্রিপ্রোকেসারগুলি সেট করুন (DEBUG / _DEBUG ইতিমধ্যে VS এ সংজ্ঞায়িত করা উচিত)।

এটি "মোড = ডিবাগ" প্রিন্ট করার কারণ আপনার #define elif এবং তারপরে elif এড়িয়ে চলে।

এছাড়াও, চেক করার সঠিক উপায় হল:

#if DEBUG
    Console.WriteLine("Mode=Debug"); 
#else
    Console.WriteLine("Mode=Release"); 
#endif

রিলেস জন্য চেক করবেন না

সমাধান বৈশিষ্ট্যগুলিতে, আমার এক এবং একমাত্র প্রকল্পের জন্য আমার "রিলিজ" কনফিগারেশন সেট আছে।

প্রধান রুটিনের শুরুতে, আমার এই কোড আছে এবং এটি "মোড = ডিবাগ" দেখাচ্ছে। আমি খুব উপরের এই দুটি লাইন আছে:

#define DEBUG 
#define RELEASE

আমি সঠিক পরিবর্তনশীল পরীক্ষা করছি?

#if (DEBUG)
            Console.WriteLine("Mode=Debug"); 
#elif (RELEASE)
            Console.WriteLine("Mode=Release"); 
#endif

আমার লক্ষ্য ডিবাগ বনাম রিলিজ মোড উপর ভিত্তি করে ভেরিয়েবল জন্য বিভিন্ন ডিফল্ট সেট করা হয়।




আমি এই বনাম খুঁজছেন # বনাম খুঁজছেন এটি চেক পছন্দ:

if (System.Diagnostics.Debugger.IsAttached)
{
   //...
}
else
{
   //...
}

ক্যাভিট দিয়ে অবশ্যই আপনি ডিবাগ মোডে কিছু কম্পাইল এবং স্থাপন করতে পারেন তবে এখনও ডিবাগার সংযুক্ত থাকে না।




যদি আপনি বিল্ড টাইপের জন্য সংজ্ঞায়িত পরিবর্তনশীল ব্যবহার করার চেষ্টা করছেন তবে আপনাকে দুটি লাইন মুছে ফেলতে হবে ...

#define DEBUG  
#define RELEASE 

... এই #if (DEBUG) সর্বদা সত্য হতে হবে।

এছাড়াও RELEASE জন্য একটি ডিফল্ট শর্তাধীন সংকলন প্রতীক নেই। আপনি প্রোজেক্ট প্রোপার্টিগুলিতে যাওয়ার জন্য একটি সংজ্ঞায়িত করতে চান তবে বিল্ড ট্যাবে ক্লিক করুন এবং তারপরে সাধারণ শিরোনামের অধীনে শর্তাধীন সংকলন প্রতীকগুলিতে পাঠ্য বাক্সে RELEASE যোগ করুন।

অন্য বিকল্পটি করতে হবে ...

#if DEBUG
    Console.WriteLine("Debug");
#else
    Console.WriteLine("Release");
#endif



শীর্ষে আপনার সংজ্ঞায়িত সরান

#if DEBUG
        Console.WriteLine("Mode=Debug"); 
#else
        Console.WriteLine("Mode=Release"); 
#endif



নামস্থান

using System.Resources;
using System.Diagnostics;

পদ্ধতি

   private static bool IsDebug()
    {
        object[] customAttributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(DebuggableAttribute), false);
        if ((customAttributes != null) && (customAttributes.Length == 1))
        {
            DebuggableAttribute attribute = customAttributes[0] as DebuggableAttribute;
            return (attribute.IsJITOptimizerDisabled && attribute.IsJITTrackingEnabled);
        }
        return false;
    }



প্রোজেক্ট বিল্ড প্রোপার্টিগুলিতে DEBUG ধ্রুবক সংজ্ঞায়িত করতে ভুলবেন না। এটি #if DEBUG সক্ষম করবে। আমি একটি পূর্ব-সংজ্ঞায়িত RELEASE ধ্রুবক দেখতে পাচ্ছি না, যাতে কোনও ডেবিউগ ব্লকটিতে কোনওটি রিলিজ মোড প্রকাশ করতে পারে না।




Related

c# debugging release