2009-03-04 23 views
13

Tôi có một dự án VS2008 được viết bằng C# với một số cụm. Tôi muốn có một cách đơn giản để quản lý các số phiên bản giữa tất cả các hội đồng khác nhau và một cách để tự động tăng số bản dựng và lưu nó vào số phiên bản của mỗi assembly.Quản lý số phiên bản lắp ráp tự động trong VS2008

Tôi đoán rằng đây là vấn đề với hầu hết các dự án vì vậy có lẽ nó đã được giải quyết trước đó?

Bất kỳ đề xuất nào về cách tôi có thể đơn giản hóa việc quản lý tài nguyên phiên bản của dự án của mình?

Trả lời

17

tôi sử dụng một file .cs vào mức độ giải pháp mà được liên kết bởi tất cả các dự án trong các giải pháp, trong đó có những dòng sau:

using System.Reflection; 
[assembly : AssemblyVersion("1.2.3.*")] 

Và hãy chắc chắn để loại bỏ các AssemblyFileVersion thuộc tính từ tập tin AssemblyInfo trong dự án của bạn .

+0

Nó không giống như làm việc trên VB hoặc là nó vì phiên bản Express cho VS.NET? Trông giống như một thủ thuật tuyệt vời. –

+0

Bạn cũng cần thêm một cách sử dụng. Tôi sẽ trả lời câu trả lời của tôi. –

+2

Bạn có nghĩa là xóa thuộc tính "AssemblyFileVersion", phải không? – Alexander

0

Bạn có thể viết tác vụ MSBuild tùy chỉnh để thực hiện việc này. Hãy xem this approach

10

Đặt tệp vào giải pháp, gọi đây là "SolutionInfo.cs" (tôi giả sử C#, cũng sẽ hoạt động trong VB). Trong này đặt tất cả các thuộc tính bạn có chung. Bắt đầu với AssemblyVersionAttribute.

Sau đó, trong mỗi dự án liên kết với điều này bằng cách chọn thêm mục hiện có cho từng dự án, nhưng thay vì nhấp vào thêm, hãy sử dụng trình đơn thả xuống để thêm làm liên kết.

0

Bạn có thể sử dụng dấu hoa thị trong AssemblyInfo.cs của bạn:

// Version information 
[assembly: AssemblyVersion("1.0.*")] 

Nó sẽ làm tăng versionnumbers của bạn tự động. Để chia sẻ một số giữa tất cả các hội đồng ... Tôi không chắc chắn, nhưng có thể bạn sử dụng thuộc tính được đề cập trong một tệp được chia sẻ.

3

Chúng tôi có một tệp AssemblyInfoGlobal.cs duy nhất ở cấp độ giải pháp, giống như các câu trả lời khác. Sau đó, chúng tôi có một phần của kịch bản xây dựng của chúng tôi một ứng dụng nhỏ có CCNetLabel mà CruiseControl.net xác định (và sử dụng defaultLabeller để tạo nhãn) và kiểm tra tệp toàn cầu, sửa đổi số phiên bản và sau đó kiểm tra tệp toàn cục trở lại

Một số dự án của chúng tôi có nhiều giải pháp, vì vậy tệp chung nằm trên mức giải pháp trong cấu trúc thư mục, đủ cao để mọi thứ cần ở bên dưới.

Chúng tôi cũng cập nhật số phiên bản dự án triển khai - số cho các tệp này được tìm thấy trong tệp VDProj, nhưng tôi không chắc bạn sẽ tìm thấy các phiên bản này - tôi nghĩ đó là một tính năng Chuyên nghiệp đầy đủ. Và một số dự án có một tá dự án triển khai, nhưng không có cách nào dễ dàng để làm cho phiên bản thứ tự số thứ tự từ chính tệp VDPROJ. Sau đó, việc xây dựng xảy ra có nghĩa là tất cả các kết quả đầu ra từ bản dựng đều có cùng số phiên bản, bất kỳ lúc nào chúng tôi có thể lấy phiên bản từ MSI hoặc assembly và chúng tôi biết chính xác nguồn nào là được sử dụng để xây dựng đầu ra đó.

+0

Chúng tôi làm như vậy bằng cách sử dụng TeamCity và các tác vụ cộng đồng MSBuild. Thay vì chỉ tăng số lượng, mà chúng tôi làm, chúng tôi cũng thiết lập phiên bản sửa đổi để thay đổi số kiểm soát nguồn. Điều đó cho phép chúng tôi theo dõi mọi tạo phẩm nhị phân để sửa đổi nguồn chính xác. – Todd

0

Tôi đã sử dụng svnversion MSBuild community tasks để làm điều gì đó như thế này, tôi đã làm theo hướng dẫn here Mặc dù cách tôi thực hiện không kéo dài nhiều cụm.

1

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

Chỉ cần một lời nhận xét về vấn đề này, các chu kỳ số phiên bản được tạo tự động. Vì vậy, nếu bạn đang tìm kiếm để có thể phiên bản như vậy mà một xây dựng ngày hôm qua có một phiên bản 1.2.3.X nơi X < X một xây dựng ngày hôm nay thì đây không phải là con đường để đi.

Để đạt được điều này sử dụng

[assembly : AssemblyVersion("1.2.*")] 

Điều này sẽ giúp bạn có được phiên bản 1.2.X.Y nơi sự kết hợp của X.Y lớn ngày nay hơn là ngày hôm qua. Tôi đoán X.Y là một chức năng của ngày tháng và thời gian tương ứng

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