Jawaban:
The obj
folder memegang objek, atau menengah, file , yang dikompilasi file biner yang belum dikaitkan belum. Mereka pada dasarnya adalah fragmen yang akan digabungkan untuk menghasilkan executable final. Compiler menghasilkan satu file objek untuk setiap file sumber, dan file-file itu ditempatkan ke dalam obj
folder.
The bin
folder memegang file biner , yang merupakan kode dieksekusi sebenarnya untuk aplikasi Anda atau perpustakaan.
Masing-masing folder ini dibagi lagi menjadi Debug
dan Release
folder, yang hanya sesuai dengan konfigurasi pembangunan proyek. Dua jenis file yang dibahas di atas ditempatkan ke dalam folder yang sesuai, tergantung pada jenis bangunan yang Anda lakukan. Ini memudahkan Anda untuk menentukan executable mana yang dibuat dengan simbol debugging, dan mana yang dibangun dengan optimasi yang diaktifkan dan siap untuk dirilis.
Perhatikan bahwa Anda dapat mengubah di mana Visual Studio mengeluarkan file Anda yang dapat dieksekusi selama kompilasi di Properties proyek Anda. Anda juga dapat mengubah nama dan opsi yang dipilih untuk konfigurasi bangunan Anda.
obj
benar-benar hanya berisi file kode objek yang tidak ditautkan ? Dari pengalaman saya, ini berisi semuanya , dan pada langkah build terakhir, file yang merupakan bagian dari "set terakhir" disalin ke bin
.
Saya akan mendorong Anda untuk melihat video youtube ini yang menunjukkan perbedaan antara C # bin dan folder obj dan juga menjelaskan bagaimana kami mendapatkan manfaat dari kompilasi tambahan / kondisional.
Kompilasi C # adalah proses dua langkah, lihat diagram di bawah ini untuk lebih jelasnya:
Jika Anda membandingkan direktori bin dan obj, Anda akan menemukan jumlah file yang lebih besar di direktori "obj" karena memiliki file kode yang dikompilasi secara individu sementara "bin" memiliki satu unit.
The obj
direktori untuk file objek menengah dan file data sementara lainnya yang dihasilkan oleh compiler atau membangun sistem selama membangun. The bin
direktori direktori yang binari akhir keluaran (dan dependensi atau file deployable lainnya) akan ditulis.
Anda dapat mengubah direktori aktual yang digunakan untuk kedua tujuan dalam pengaturan proyek, jika Anda mau.
Satu fakta menarik tentang direktori obj: Jika Anda memiliki pengaturan penerbitan di proyek web, file yang akan diterbitkan dipentaskan ke obj \ Release \ Package \ PackageTmp. Jika Anda ingin mempublikasikan file sendiri daripada menggunakan fitur VS terintegrasi, Anda dapat mengambil file yang sebenarnya perlu Anda sebarkan di sini, daripada mengambil semua puing-puing digital dalam direktori bin.
Hati-hati dengan setup
proyek jika Anda menggunakannya; Proyek setup Visual Studio Primary Output
menarik dari obj
folder daripada bin
.
Saya merilis aplikasi yang saya pikir sudah dikaburkan dan masuk msi
setup cukup lama sebelum saya menemukan bahwa file aplikasi yang dikerahkan sebenarnya tidak dikaburkan atau ditandatangani ketika saya melakukan prosedur post-build pada bin
folder assemblies dan seharusnya menargetkan obj
folder. majelis sebagai gantinya.
Ini jauh dari imho intuitif, tetapi setup
pendekatan umum adalah dengan menggunakan Primary Output
proyek dan ini adalah obj
folder. Saya akan senang jika seseorang bisa menjelaskan btw ini.