2010-10-15 25 views
5

Điểm biên dịch các thư mục riêng biệt là gì? Tại công việc của tôi, chúng tôi có hơn 50 dự án sống qua một vài giải pháp khác nhau. Khi các dự án nằm trong cùng một giải pháp, bạn có thể thiết lập một tham chiếu dự án và nó sẽ lấy assembly trong thư mục \ debug hoặc \ release tương ứng. Nhưng khi thiết lập một tham chiếu ngoài (thông qua Browse) và bạn trỏ tới \ debug \ assebmly.dll hoặc \ release \ assembly.dll, dự án tham chiếu sẽ không nhận một assembly "release" nếu dự án được tham chiếu được biên dịch trong chế độ release.Mục đích của các cấu hình gỡ lỗi/phát hành trong Visual Studio 2008/2010 biên dịch thành các thư mục khác nhau là gì?

Tôi hiểu rằng thông thường quy trình xây dựng có thể xử lý việc này, nhưng trong trường hợp tôi cần biên dịch một dự án ở chế độ phát hành ngoài quá trình xây dựng, điều này có nghĩa là tôi phải kiểm tra tất cả các tham chiếu bên ngoài thư mục \ release. Đây là điều dễ bị bỏ lỡ - và tôi không muốn phải suy nghĩ về mọi lúc. Vì vậy, suy nghĩ của tôi là luôn luôn biên dịch việc lắp ráp cho một dự án vào thư mục \ bin cho dù cấu hình gỡ lỗi hay phát hành được chọn. Bất kỳ khuyết điểm nào đối với phương pháp này?

I also have a blog post on this topic here.

Trả lời

3

Vâng, nó rất đơn giản, bởi vì không sử dụng thư mục riêng biệt là rất tồi tệ hơn nhiều. Bạn sẽ tạo Bản phát hành, tìm hiểu điều gì đó không ổn, chuyển về Debug và không tải phiên bản gỡ lỗi thực tế của các hội đồng. Trừ khi bạn sử dụng Build + Clean một cách rõ ràng trước tiên. Bây giờ bạn sẽ đi kiếm chiến đấu hoặc ghé thăm SO, quên mất lý do tại sao bạn chuyển trở lại.

Xử lý kết quả đầu ra của dự án từ một giải pháp khác cũng được chuyển tiếp: luôn luôn thêm tham chiếu vào phiên bản Phát hành. Bởi vì nếu bạn cần gỡ lỗi và thay đổi assembly đó thì bạn sẽ thêm dự án vào giải pháp hiện tại của bạn.

3

Nó không chỉ là các tệp nhị phân, mà còn là tệp trung gian. Đó là lý do tại sao nó cần thiết để biên dịch vào các thư mục khác nhau.

Nếu bạn muốn có tệp nhị phân trong thư mục bin, hãy thay đổi tệp đầu ra hoặc thêm copy làm bước xây dựng tùy chỉnh. Tôi hiểu rằng điều này làm tăng thêm sự bất tiện cho quy trình làm việc của bạn, nhưng bạn phải nhận ra rằng việc xây dựng các thư mục tương tự theo mặc định sẽ là một PITA rất lớn đối với nhiều người.

Ngoài ra, khi thêm tham chiếu vào dự án ngoài giải pháp, hãy thử sử dụng các macro như $(ConfigurationName) trong tham chiếu đến tự động chèn "Phát hành" hoặc "Gỡ lỗi" trong đường dẫn của bạn nếu cần. (Tôi ghen tị với bạn vì chỉ phải đối phó với hai cấu hình mặc định ...)

Và sau đó, đây là một ý tưởng khác: Các dự án có thể sống trong nhiều hơn một giải pháp. Có một giải pháp cho mỗi sự kết hợp hợp lệ của các dự án mà bạn phải xây dựng. Bằng cách này, bạn sẽ sử dụng tính năng Phụ thuộc dự án và sẽ luôn xây dựng các bản dựng giải pháp cập nhật của bạn chỉ bằng một cú nhấp chuột.

HTH

+0

"tệp trung gian" là gì? – Tone

+0

ví dụ: tệp đối tượng (.obj) – Fozi

+1

nhưng các tệp trong thư mục obj ở cấp thư mục dự án gốc trong khi thư mục gỡ lỗi và phát hành nằm trong thư mục bin ... vì vậy tôi không chắc mình hiểu ý bạn bằng cách nói rằng tệp trung gian bị ảnh hưởng cũng. Bạn có thể làm rõ? – Tone

0

Nếu bạn xây dựng mọi thứ vào một thư mục, chuyển đổi cấu hình, sau đó thực hiện xây dựng một phần giải pháp (chỉ là thành phần dữ liệu của bạn), bạn có thể dễ dàng kết thúc với một hỗn hợp gỡ lỗi và phát hành các hội đồng đang được sử dụng. Đó là một điều xấu.

Bằng cách giữ các bản dựng trong các thư mục riêng biệt, bạn có thể đảm bảo rằng tất cả các cụm được xây dựng từ cùng một cấu hình.

Các vấn đề liên quan