কম্পিউটার টিউটোরিয়াল

C#-তে bin এবং obj ফোল্ডার কী?

C# কোড লিখে সলিউশন বিল্ড বা রান করলে দুটি ফোল্ডার তৈরি হয়:

  • bin (Binary)
  • obj (Object)

এই দুটি ফোল্ডারে কম্পাইল করা কোড থাকে। কিন্তু কেন দুটি ফোল্ডার?

কারণ: কম্পাইলেশনের দুই ধাপ

  1. Compiling (কম্পাইলিং): প্রতিটি কোড ফাইল আলাদা আলাদা কম্পাইল হয় ইনডিভিডুয়াল ইউনিটে
  2. Linking (লিংকিং): এই কম্পাইলড ফাইলগুলো একসাথে লিংক হয় একটি যুনিটে (DLL বা EXE)

ফোল্ডারWISE ভাগ

ফোল্ডারধাপরखে কী
objCompilingপ্রতিটি ফাইলের কম্পাইলড আউটপুট (ইন্টারমিডিয়েট ফাইল)
binLinkingফাইনাল লিংকড আউটপুট (DLL বা EXE)

obj ফোল্ডারের গুরুত্ব: ইনক্রিমেন্টাল কম্পাইলেশন

বড় প্রজেক্টে যদি আপনি শুধু এক ফাইল পরিবর্তন করেন এবং রি-বিল্ড করেন, তবে শুধু সেই ফাইলটি রি-কম্পাইল হবে। বাকি ফাইলগুলোর ইন্টারমিডিয়েট আউটপুট obj ফোল্ডার থেকে পুনরায় ব্যবহার করা হবে। এতে বিল্ড টাইম বাঁচায়।

ফোল্ডার স্ট্রাকচার উদাহরণ

MyProject/
├── bin/
│   ├── Debug/
│   │   ├── net6.0/
│   │   │   ├── MyProject.dll
│   │   │   ├── MyProject.pdb
│   │   │   └── ...
│   └── Release/
│       └── net6.0/
│           └── ...
└── obj/
    ├── Debug/
    │   ├── net6.0/
    │   │   ├── MyProject.AssemblyInfo.cs
    │   │   ├── MyProject.csproj.CoreCompileInputs.cache
    │   │   └── ...
    └── Release/
        └── ...

পারফরম্যান্স টিপস

  • obj ফোল্ডার মুছে দিলে পরের বিল্ডে সব ফাইল নতুন করে কম্পাইল হবে (धीম হবে)
  • bin ফোল্ডার মুছে দিলে শুধু ফাইনাল আউটপুট রিজেনারেট হবে
  • Clean Solution দিয়ে দুটোই মুছে ফেলা যায়
  1. ‘Perflogs’ ফোল্ডার কী এবং এটিকে মুছে ফেলা উচিত কিনা?

  2. $sysreset ফোল্ডার কী এবং কীভাবে ডিলিট করবেন?

  3. $av_asw ফোল্ডার কী এবং কীভাবে এটি মুছে ফেলবেন?

  4. Windows.old ফোল্ডার বুঝুন: কেন তৈরি হয় এবং কীভাবে নিরাপদে ডিলিট করবেন