2009-09-23 35 views
20

Thực ra tôi gặp vấn đề tôi thường gặp phải như tôi muốn:So sánh các cấu hình trong Visual Studio?

Hãy xem xét những điều sau đây: Bạn vừa tạo một giải pháp/dự án mới và bắt đầu tạo/thêm tất cả những thứ bạn cần. Trong khi bạn làm như vậy, bạn luôn trên đường trong cấu hình gỡ lỗi. Bạn thực hiện thay đổi cấu hình của bạn (trong C + + dự án đặc biệt là trình biên dịch, thiết lập liên kết) và vào cuối ngày bạn chỉ muốn trao đổi để phát hành chế độ để thực hiện một xây dựng cuối cùng và những gì sẽ xảy ra ?? Bạn nhận được nhiều thông báo lỗi về định nghĩa bị thiếu, thư viện được liên kết, định nghĩa tiền xử lý, tiêu đề được biên dịch trước, v.v.)

Và bây giờ? Bạn mở các thuộc tính dự án, chọn từng mục trong khung nhìn cây và chuyển đổi và quay lại với hộp kết hợp của Cấu hình ở trên cùng bên trái.

Do thực tế, cả hai cấu hình đều được lưu trong một tệp, bạn cũng không thể sử dụng Công cụ Diff đơn giản hoặc bạn phải sao chép và dán cả hai phần ra khỏi tệp dự án vào hai tệp khác nhau hợp nhất mọi thứ lại vào tệp dự án.

Không có giải pháp nào tốt hơn để so sánh các cấu hình khác nhau trong một dự án?

+4

Khi bạn đang tìm kiếm giải pháp sau khi nghĩ, đây là những gì tôi làm để tránh vấn đề này ngay từ đầu: Bất cứ khi nào tôi thay đổi bất cứ điều gì trong cấu hình, tôi chọn _All configure_. Điều này là tốt cho hầu hết các cài đặt có sẵn, đặc biệt là đối với những thứ như cài đặt Liên kết và Bao gồm. – OregonGhost

+2

Bạn nói đúng. Tôi sẽ sử dụng * Tất cả các cấu hình *, nhưng đôi khi tôi chỉ bỏ lỡ và sau một thời gian tôi chỉ nhận ra, rằng tôi không thể nhận được tất cả các cấu hình thành công xây dựng và sau đó làm việc damn bằng tay so sánh cấu hình bắt đầu ... – Oliver

+1

I đã trở nên thất vọng với vấn đề này mà tôi đang nghĩ đến việc viết một công cụ để phân tích cú pháp một tệp dự án và so sánh các giá trị khác nhau giữa các cấu hình khác nhau. Bạn đã bao giờ tìm thấy một giải pháp (vì vậy tôi không phải viết công cụ của riêng mình)? – aldo

Trả lời

1

Tôi không có giải pháp hoàn hảo để so sánh trong tệp dự án ... nhưng đối với giá trị của nó, bạn có thể thấy hữu ích khi so sánh tệp dự án hiện tại với bản sao trong điều khiển nguồn. Và sau đó, nơi bạn nhìn thấy một giá trị thay đổi trong một phần, bạn có thể nhanh chóng xem liệu giá trị đó cũng có thay đổi trong phần khác không.

Nhưng câu hỏi của bạn đã chỉ định một dự án mới ... vì vậy tôi sẽ giả sử nó không nằm trong kiểm soát nguồn.

Vì vậy, đây là một tùy chọn khác: Sao chép tệp dự án sang một tên khác và sau đó so sánh hai bản sao. Có, chúng sẽ giống nhau ... nhưng nếu bạn sử dụng một công cụ tốt như Beyond Compare 2 cho phép bạn căn chỉnh các phần theo cách thủ công thì bạn có thể nhấp chuột phải vào dòng đầu tiên của phần gỡ lỗi trong cửa sổ bên trái và chọn Căn chỉnh Bấm thủ công rồi bấm chuột phải vào dòng đầu tiên của phần phát hành trong cửa sổ bên phải và chọn Căn chỉnh theo cách thủ công. Thì đấy ... có những thay đổi của bạn. :)

+0

Đây là những lựa chọn khá tốt và tôi đã cố gắng làm công cụ này nhiều hơn hoặc ít hơn, nhưng cảm thấy khó chịu và xấu xí. Đặc biệt là việc sử dụng các công cụ khác (ngay cả phiên bản tích hợp VS để kiểm soát nguồn) chỉ cho thấy rằng các công cụ đã có sẵn. Tất cả những gì chúng tôi cần là một cơ chế, chia nhỏ tệp xml một cách chính xác để hiển thị hai phiên bản (ví dụ: gỡ lỗi, phát hành) bên cạnh nhau và bạn không phải thực hiện việc này theo cách thủ công. – Oliver

1

Có một chương trình có tên BeyondCompare3 rất rẻ. Tôi hiếm khi xác nhận sản phẩm, nhưng nó sẽ làm công việc cho bạn ở đây. Sử dụng tùy chọn "So sánh lựa chọn vào khay nhớ tạm".

+0

Như tôi đã nói, tôi cố gắng hoàn thành các tác vụ này với một công cụ tìm khác biệt bên ngoài. Nhưng nó chỉ cảm thấy khó chịu khi mở các tệp xml thô và tự căn chỉnh hai phần, để công cụ khác so sánh hai phần này. – Oliver

+0

Bạn có sử dụng công cụ cụ thể này không? Có rất nhiều biến thể giữa các công cụ khác nhau. Với BeyondCompare 3, bạn chỉ cần làm nổi bật các khu vực cần so sánh. Nó vẫn cần nỗ lực, nhưng không nhiều như sắp xếp. Nếu bạn đang tìm kiếm câu trả lời tự động "sửa cấu hình của tôi", bạn sẽ phải tự viết nó. Đó là một vấn đề đủ nhỏ mà sẽ không có nhiều người ngoài kia viết một tiện ích, miễn phí hay nói cách khác, để giải quyết nó. –

3

Đối với những gì nó có giá trị bây giờ, đây là cách tôi xử lý vấn đề thay đổi một cấu hình và quên thay đổi cấu hình khác. Quá trình này mà tôi sử dụng, tuy nhiên, không có hai caveats: 1) nó hoạt động với VS2010 trở lên; và, 2) Tôi đã học được để tránh vấn đề đó hoàn toàn.

Trước hết, tôi KHÔNG BAO GIỜ thực hiện thay đổi đối với trang thuộc tính của dự án! Họ có xu hướng sử dụng điều kiện xây dựng gây ra vấn đề này ở nơi đầu tiên. Thay vào đó, tôi luôn có "Trình quản lý tài sản" của tôi được mở bên cạnh "Solution Explorer" của tôi.

Thứ hai, tôi có một vài tờ sở hữu "được xác định trước" trong một thư mục con gọi là common.properties mà tôi bao gồm từ, ví dụ:

  • my_macros.props - định nghĩa vĩ mô phổ biến cụ thể để tôi cấu trúc thư mục (read: framework) của giải pháp. Ví dụ, tôi có một định nghĩa được gọi là MY_COMMON_OUTPUT_DIRECTORY bằng $ (SolutionDir) bin \ $ (Cấu hình) \ $ (ProjectName).

  • my_dox_settings.props - Cài đặt cụ thể cho các dự án doxygen.Vâng, tôi tạo ra một dự án riêng biệt bằng cách sử dụng doxygen để tạo tài liệu của tôi.

  • my_test_settings.props - Cài đặt cụ thể cho khung kiểm thử đơn vị của tôi. Một lần nữa, một dự án riêng biệt cho các bài kiểm tra đơn vị. Thêm sự kiện sau khi xây dựng để chạy tệp thực thi được biên dịch.

  • my_app_settings.props - Cài đặt mặc định cho khung ứng dụng của tôi. Ví dụ, nó đặt "thư mục đầu ra" cho MY_COMMON_OUTPUT_DIRECTORY đã đề cập trước đó.

  • my_app_settings_use_pch.props - Các thay đổi bổ sung cho khung ứng dụng của tôi sử dụng các tiêu đề được biên dịch trước. Nó chỉ đơn giản thêm một chuyển đổi trình biên dịch/DI_WANT_MY_PCH.

  • include_boost_files.props - Cài đặt để thêm thư viện tăng cường vào dự án của tôi.

  • include_ogre_files.props - Cài đặt thêm thư viện ogre vào dự án của tôi.
  • include_sdl_file.props - Cài đặt thêm thư viện sdl vào dự án của tôi.

  • Bạn nên nhận được ý tưởng ...

Tiếp theo, tôi tạo ra một tờ sở hữu trống MỚI và thêm nó là tốt. Tôi thường gọi đây là $ (ProjectName) .props [LƯU Ý: hãy chắc chắn tự mở rộng macro] và sau đó thêm nó thông qua trình quản lý thuộc tính làm mục cuối cùng.

Bây giờ, khi tôi cần thực hiện thay đổi đối với dự án, tôi chỉ cần chuyển sang trình quản lý thuộc tính và thay đổi trang thuộc tính thích hợp. Hãy nhớ rằng làm như vậy sẽ ảnh hưởng đến tất cả các dự án sử dụng trang thuộc tính đó. Nếu bạn chỉ muốn ảnh hưởng đến dự án hiện tại của mình, hãy sửa đổi trang thuộc tính $ (ProjectName). Trừ khi bạn xây dựng trong điều kiện (mà tôi sẽ không nhận được vào), một thay đổi ảnh hưởng đến nhiều cấu hình (và các dự án).

Tôi thậm chí còn kiểm tra thư mục common.properties của mình trong điều khiển nguồn.

Tôi hy vọng điều này sẽ giúp,

+0

Âm thanh như một ý tưởng khá hay. Tôi không bao giờ làm việc với các trang thuộc tính tự định nghĩa (nguyên nhân tôi không biết về chúng). Nut nó âm thanh như giá trị của nó để có một cái nhìn sâu sắc hơn. – Oliver

+0

Vậy giải pháp này đã được giải quyết như thế nào cho bạn? – jump

2

Tôi không chắc chắn khi họ giới thiệu nó, nhưng trong VS2015 tại-nhất, bạn có thể chọn "Nhiều Configurations ..." trong cấu hình danh sách thả xuống trên tài sản Màn hình trang. Sau đó, bạn có thể chọn "Tất cả các tùy chọn" từ các phần khác nhau và xem các thông số nào khác nhau (các thông số khác nhau). Không hiển thị cho bạn các giá trị thực tế - bạn vẫn phải chuyển đổi qua lại cho điều đó - nhưng ít nhất bạn có thể phát hiện ra sự khác biệt một cách nhanh chóng.

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