C# কোড লিখে সলিউশন বিল্ড বা রান করলে দুটি ফোল্ডার তৈরি হয়:
- bin (Binary)
- obj (Object)
এই দুটি ফোল্ডারে কম্পাইল করা কোড থাকে। কিন্তু কেন দুটি ফোল্ডার?
কারণ: কম্পাইলেশনের দুই ধাপ
- Compiling (কম্পাইলিং): প্রতিটি কোড ফাইল আলাদা আলাদা কম্পাইল হয় ইনডিভিডুয়াল ইউনিটে
- Linking (লিংকিং): এই কম্পাইলড ফাইলগুলো একসাথে লিংক হয় একটি যুনিটে (DLL বা EXE)
ফোল্ডারWISE ভাগ
| ফোল্ডার | ধাপ | রखে কী |
|---|---|---|
| obj | Compiling | প্রতিটি ফাইলের কম্পাইলড আউটপুট (ইন্টারমিডিয়েট ফাইল) |
| bin | Linking | ফাইনাল লিংকড আউটপুট (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 দিয়ে দুটোই মুছে ফেলা যায়