Jawaban:
The objfolder 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 objfolder.
The binfolder memegang file biner , yang merupakan kode dieksekusi sebenarnya untuk aplikasi Anda atau perpustakaan.
Masing-masing folder ini dibagi lagi menjadi Debugdan Releasefolder, 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.
objbenar-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 objdirektori untuk file objek menengah dan file data sementara lainnya yang dihasilkan oleh compiler atau membangun sistem selama membangun. The bindirektori 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 setupproyek jika Anda menggunakannya; Proyek setup Visual Studio Primary Outputmenarik dari objfolder daripada bin.
Saya merilis aplikasi yang saya pikir sudah dikaburkan dan masuk msisetup cukup lama sebelum saya menemukan bahwa file aplikasi yang dikerahkan sebenarnya tidak dikaburkan atau ditandatangani ketika saya melakukan prosedur post-build pada binfolder assemblies dan seharusnya menargetkan objfolder. majelis sebagai gantinya.
Ini jauh dari imho intuitif, tetapi setuppendekatan umum adalah dengan menggunakan Primary Outputproyek dan ini adalah objfolder. Saya akan senang jika seseorang bisa menjelaskan btw ini.