Saya membuat proyek baru di Visual Studio 2010 dan memperhatikan bahwa sekarang ada dua folder baru bernama obj
dan bin
di direktori proyek saya.
Sepasang folder serupa dibuat saat membuat dan men-debug - untuk apa folder-folder ini?
sumber
Saya membuat proyek baru di Visual Studio 2010 dan memperhatikan bahwa sekarang ada dua folder baru bernama obj
dan bin
di direktori proyek saya.
Sepasang folder serupa dibuat saat membuat dan men-debug - untuk apa folder-folder ini?
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 kebin
.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.
sumber
The
obj
direktori untuk file objek menengah dan file data sementara lainnya yang dihasilkan oleh compiler atau membangun sistem selama membangun. Thebin
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.
sumber
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.
sumber
Hati-hati dengan
setup
proyek jika Anda menggunakannya; Proyek setup Visual StudioPrimary Output
menarik dariobj
folder daripadabin
.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 padabin
folder assemblies dan seharusnya menargetkanobj
folder. majelis sebagai gantinya.Ini jauh dari imho intuitif, tetapi
setup
pendekatan umum adalah dengan menggunakanPrimary Output
proyek dan ini adalahobj
folder. Saya akan senang jika seseorang bisa menjelaskan btw ini.sumber