12

Microsoft Visual Studio sử dụng XML để lưu các tệp dự án .vcproj của nó. Vì vậy, các tệp dự án XML khác biệt nên dễ dàng.Gợi ý để duy trì tệp dự án Visual Studio vcproj trong điều khiển phiên bản

Thật không may, nếu bạn thay đổi bất kỳ thuộc tính nào của tệp dự án, Visual Studio nhấn mạnh vào việc xáo trộn ngẫu nhiên các nút XML của tệp dự án! Điều này làm cho việc phân biệt văn bản và hợp nhất các thay đổi về tệp dự án về cơ bản là không thể. Thay đổi một thiết lập trình biên dịch có thể làm cho công cụ phân biệt hình ảnh của tôi nghĩ rằng tôi đã thay đổi 50% các dòng trong tập tin! Tôi thậm chí đã thử một số công cụ khác biệt XML, nhưng chúng chỉ hiển thị một cái nhìn có cấu trúc hơn về cùng một mớ hỗn độn.

Có ai có bất kỳ đề xuất nào để duy trì các tệp .vcproj trong kiểm soát nguồn không? Hoặc một cách để thuyết phục Visual Studio không sắp xếp lại các nút XML trong tệp .vcproj?

(Tôi cũng đã điều tra sử dụng các công cụ như CMake để tạo .vcproj tập tin từ một file văn bản khác thân thiện hơn, nhưng CMake có vấn đề riêng của mình.)

Trả lời

5

Điều này dường như hiện ra ngay bây giờ.

Có lẽ đó là một vấn đề chín muồi cho một plug-in hoặc công cụ bình thường khác.

Nó sẽ là một doanh nghiệp lớn, cho đến khi MS quyết định sửa chữa nó. Sau đó, bạn không may mắn - trừ khi tất nhiên họ cung cấp để mua IP của bạn.

Bất kỳ ai muốn bắt đầu dự án nguồn mở hoặc sản phẩm thương mại? Tôi là game.

Tôi có thể có một công cụ bình thường hóa độc lập, sau đó xem tôi có thể biến nó thành một plugin hay không.

+1

Tôi đoán sẽ dễ dàng để viết một tập lệnh Python ngắn để sắp xếp theo thứ tự bảng chữ cái một tệp .vcproj XML. Tôi thấy rằng WinMerge có các plugin cho XML khác; có lẽ ai đó nên viết plugin "vcproj alphabetizer" WinMerge? Có thể tôi sẽ. :) –

2

tôi sử dụng WinMerge như diff-công cụ của tôi và tôi kích hoạt di chuyển khối phát hiện. Nó không hoàn toàn khắc phục vấn đề, nhưng nó làm cho hình dung sự khác biệt một chút bearable hơn.

0

Bạn đang xem phiên bản Visual Studio nào?

Tôi làm rất nhiều việc với tệp .vcproj (chúng tôi duy trì phiên bản tệp dự án cho thư viện của mình trong nhiều phiên bản Visual Studio và tôi luôn phân biệt và hợp nhất mọi thứ) nhưng tôi chưa bao giờ thấy hành vi này .

+0

VS2008, nhưng tôi đã nghe nói rằng VS2005 có cùng một vấn đề. Các "vcproj shuffle" xảy ra ngẫu nhiên. Các dự án của tôi có một vài thư mục con (Headers and Sources). Khi điều hướng chúng, VS đôi khi sẽ sắp xếp lại các dự án trong GUI, sắp xếp chúng ngẫu nhiên hoặc theo thứ tự bảng chữ cái. Điều đó có thể liên quan. –

+0

Cảm ơn. Tôi chắc chắn sẽ theo dõi điều này, và nếu tôi tìm hiểu bất cứ điều gì có thể giúp đỡ, tôi sẽ đăng nó ở đây. –

0

Nhóm của tôi tại Adobe đã thấy điều tương tự trong vs2008. Chỉ là một Debug/Release cơ bản, dự án win32/win64 cung cấp cho bạn 4 cấu hình và ngẫu nhiên xáo trộn. Một số người đã cố gắng tìm ra khi nào và tại sao devstudio quay lại, nhưng suy nghĩ hiện tại là khóa sắp xếp là một từ khóa băm - do đó bán ngẫu nhiên. Chúng tôi đã đưa ra và trong đánh giá mã chỉ tóm tắt những thay đổi "thực sự".

+1

Tại sao không tạo XSLT để sắp xếp lại tệp .vcproj theo một số chuỗi chuẩn. Làm điều đó cho cả hai tệp bạn so sánh trước thời hạn và bạn sẽ so sánh táo với táo. Tôi đã thực hiện việc này với các tệp SSTS .dtsx, thay đổi nếu bạn nhìn chằm chằm vào chúng quá lâu. –

4

Hiện tại, chúng tôi đang thấy điều này tại nơi làm việc, với các tệp dự án nơi các cấu hình được sắp xếp lại trên một số máy tính của mọi người và rất bực bội ...

* Lưu ý: Chúng ta đều sử dụng VS 2008 Pro, không Team với

Lúc đầu, nó trông giống như họ đang sắp xếp lại một cách ngẫu nhiên, nhưng có trong thực tế, một mẫu và nó không phải là ngẫu nhiên ở tất cả các .

Đối với một nhóm các cấu hình được sắp xếp theo Platform, sau đó bởi Config:

  • Debug | Win32
  • Debug | x64
  • phát hành | Win32
  • phát hành | x64
  • Gỡ lỗi DX11 | Win32
  • gỡ lỗi DX11 | x64
  • phát hành DX11 | Win32
  • phát hành DX11 | x64
  • ...

Đối với nhóm khác các cấu hình được sắp xếp theo cấu hình, sau đó bởi Hệ điều hành:

  • Gỡ lỗi | Win32
  • Phát hành | Win32
  • gỡ lỗi DX11 | Win32
  • phát hành DX11 | Win32
  • Debug | x64
  • phát hành | x64
  • gỡ lỗi DX11 | x64
  • phát hành DX11 | x64
  • ...

Xem qua lịch sử lực lượng, điều này phù hợp với nhiều dự án do cùng một nhóm người gửi và có khoảng phân chia 50/50, vì vậy nó không chỉ xảy ra cho một người.

Đây có phải là vấn đề giống như tất cả các bạn đang thấy không? Nếu vậy, tôi hy vọng mẫu này giúp tìm ra giải pháp không liên quan đến bước khác biệt vĩ mô/bổ sung ...

Nó phải là cài đặt ở đâu đó, hoặc tác dụng phụ của việc nhấp vào thứ gì đó, vì nó là 100% tái sản xuất trên mỗi máy này. Ngay cả khi nó là một cái gì đó ngớ ngẩn như tùy chọn mà bạn chọn cho bố trí môi trường ban đầu của bạn (VC + +, VB, Phát triển chung, vv ...)

0

Tôi nghĩ rằng tôi đã tìm thấy lý do cho sự lộn xộn này. Ít nhất là trong VS2008.

Nếu bạn cài đặt các trình biên dịch x64, VS sẽ ra lệnh cho các dự án như:

Debug|Win32 
Debug|x64 
Release|Win32 
Release|x64 

Nếu bạn không nó sẽ ra lệnh cho họ thích:

Debug|Win32 
Release|Win32 
Debug|x64 
Release|x64 

Vì vậy, hãy chắc chắn rằng tất cả các đồng nghiệp của bạn có cùng một bộ biên dịch được cài đặt, vì vậy nó sẽ không xáo trộn.

Đã kiểm tra hành vi này và hành vi này dường như có thể tái sản xuất.

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