Câu trả lời:
Các obj
thư mục chứa đối tượng, hoặc trung gian, các file , được biên soạn tập tin nhị phân chưa được liên kết nào. Về cơ bản, chúng là những mảnh vỡ sẽ được kết hợp để tạo ra tệp thực thi cuối cùng. Trình biên dịch tạo một tệp đối tượng cho mỗi tệp nguồn và các tệp đó được đặt vào obj
thư mục.
Các bin
thư mục chứa tập tin nhị phân , đó là những mã thực thi thực tế cho ứng dụng hoặc thư viện của bạn.
Mỗi thư mục này được chia nhỏ hơn nữa Debug
và Release
các thư mục, tương ứng với các cấu hình xây dựng của dự án. Hai loại tệp được thảo luận ở trên được đặt vào thư mục thích hợp, tùy thuộc vào loại bản dựng bạn thực hiện. Điều này giúp bạn dễ dàng xác định những tệp thực thi nào được xây dựng với các biểu tượng gỡ lỗi và được xây dựng với tối ưu hóa được kích hoạt và sẵn sàng để phát hành.
Lưu ý rằng bạn có thể thay đổi nơi Visual Studio xuất các tệp thực thi của bạn trong quá trình biên dịch trong Thuộc tính của dự án. Bạn cũng có thể thay đổi tên và các tùy chọn đã chọn cho cấu hình bản dựng của mình.
obj
thực sự chỉ chứa các tệp mã đối tượng không liên kết ? Theo kinh nghiệm của tôi, nó chứa tất cả chúng, và ở bước xây dựng cuối cùng, các tệp là một phần của "bộ cuối cùng" được sao chép vào bin
.
Tôi sẽ khuyến khích bạn xem video youtube này thể hiện sự khác biệt giữa các thư mục C # bin và obj và cũng giải thích cách chúng tôi nhận được lợi ích của việc biên dịch gia tăng / có điều kiện.
Quá trình biên dịch C # là một quá trình gồm hai bước, xem sơ đồ bên dưới để biết thêm chi tiết:
Nếu bạn so sánh cả thư mục bin và obj, bạn sẽ tìm thấy số lượng tệp lớn hơn trong thư mục "obj" vì nó có các tệp mã được biên dịch riêng lẻ trong khi "bin" có một đơn vị.
Thư obj
mục dành cho các tệp đối tượng trung gian và các tệp dữ liệu thoáng qua khác được tạo bởi trình biên dịch hoặc hệ thống xây dựng trong quá trình xây dựng. Thư mục bin
là thư mục mà các nhị phân đầu ra cuối cùng (và mọi phụ thuộc hoặc các tệp có thể triển khai khác) sẽ được ghi vào.
Bạn có thể thay đổi các thư mục thực tế được sử dụng cho cả hai mục đích trong cài đặt dự án, nếu bạn muốn.
Một sự thật thú vị về thư mục obj: Nếu bạn đã xuất bản được thiết lập trong một dự án web, các tệp sẽ được xuất bản sẽ được phân loại thành obj \ Release \ Package \ PackageTmp. Nếu bạn muốn tự xuất bản các tệp thay vì sử dụng tính năng VS tích hợp, bạn có thể lấy các tệp mà bạn thực sự cần triển khai ở đây, thay vì chọn qua tất cả các mảnh vỡ kỹ thuật số trong thư mục bin.
Hãy cẩn thận với setup
các dự án nếu bạn đang sử dụng chúng; Các dự án thiết lập Visual Studio Primary Output
lấy từ obj
thư mục chứ không phải bin
.
Tôi đã phát hành các ứng dụng mà tôi nghĩ đã bị xáo trộn và đăng nhập msi
các thiết lập trong một thời gian trước khi tôi phát hiện ra rằng các tệp ứng dụng được triển khai thực sự không bị xáo trộn cũng như không được ký khi tôi thực hiện quy trình hậu xây dựng trên các bin
thư mục và nên nhắm mục tiêu vào obj
thư mục lắp ráp thay thế.
Điều này khác xa so với imho trực quan, nhưng setup
cách tiếp cận chung là sử dụng Primary Output
dự án và đây là obj
thư mục. Tôi thích nó nếu ai đó có thể làm sáng tỏ btw này.