2011-08-31 23 views
15

Ngay bây giờ các hội đồng của chúng tôi có một số phiên bản như 2.0.831.0. Như tôi đã hiểu, đó là phiên bản chính, phiên bản nhỏ, ngày tháng và số bản dựng. Nếu tôi thực hiện thay đổi và xây dựng lại vào cùng một ngày, phiên bản 2.0.831.1, 2.0.831.2, v.v.Làm cho phiên bản TeamCity Match .NET Assembly Version

Định dạng số xây dựng TeamCity của tôi chỉ đơn giản là 2. {0} trong đó {0} là số tăng tự động mãi mãi (2.195, 2.196 vv).

Làm cách nào để làm cho TeamCity trông giống hệt như phiên bản lắp ráp? Chúng tôi muốn có thể liên kết Nhật ký thay đổi với phiên bản lắp ráp để mọi người có thể nói phiên bản lắp ráp 2.0.831.2 có những thay đổi này trong các tệp này.

Thông tin thêm: Bước xây dựng của chúng tôi sử dụng tùy chọn "Visual Studio (sln)" thay vì "MSBuild" nếu có vấn đề. Chúng tôi sử dụng Subversion để kiểm soát nguồn nếu điều đó quan trọng. Phiên bản TeamCity của chúng tôi là 6.5.1 (xây dựng 17834).

+0

http://stackoverflow.com/questions/1041153/teamcity-labeling-vcs-subversion-with-an-artifacts-file-version – sylvanaar

Trả lời

21

Tôi khuyên bạn nên sử dụng số semantic versioning scheme{major}.{minor}.{patch} và nối thêm phần tử thứ 4 cho số bản dựng {major}.{minor}.{patch}.{build}. Đây là cách hữu ích hơn để bao gồm ngày xây dựng vào lược đồ phiên bản.

TeamCity 6.5 (bạn chưa chỉ định phiên bản) có tính năng xây dựng có thể được sử dụng để vá phiên bản trong AssemblyInfo.cs trong khi tạo. Xem tài liệu cho số AssemblyInfo Patcher.

AssemblyInfo patcher dialog (TeamCity documentation)

Sau đó, bạn có thể định nghĩa các định dạng build số theo cách bạn muốn có trong lắp ráp và sử dụng định dạng cho việc xây dựng bản thân, cũng như cho các tính năng vá.

+0

Nhận xét về ccellar là câu trả lời vì tôi không có đủ danh tiếng để nhận xét. Định dạng chuỗi phiên bản là: major.minor [.build [.revision]] Số bản dựng là phần tử thứ 3, không phải là thứ 4. Nếu AssemblyVersion không có định dạng này thì lớp Phiên bản sẽ có giá trị không chính xác trong thuộc tính Xây dựng và Bản sửa đổi. http://msdn.microsoft.com/en-us/library/system.version.aspx – jbtibor

+2

@jbtibor Điểm tốt là Microsoft có một lược đồ số phiên bản khác, nhưng tôi cho rằng lược đồ của ccellar có ý nghĩa hơn và đó là lược đồ tôi sử dụng. Hãy nghĩ về nó: số xây dựng sẽ luôn là duy nhất khi sử dụng số xây dựng TeamCity, vì vậy nhiều bản dựng có thể có cùng sửa đổi, nhưng không thể có nhiều bản sửa đổi trên cùng một bản dựng, mà lược đồ của MS có vẻ hàm ý. –

+0

Bạn có thể sử dụng thuộc tính AssemblyInformationalVersionAttribute trong AssemblyInfo.cs để chỉ định phiên bản semver (thuộc tính này sẽ cho phép bạn chỉ định bất kỳ chuỗi nào làm phiên bản). Giá trị này sau đó có thể được chọn và sử dụng bởi quá trình xây dựng. Tôi thích ý tưởng rằng nó là tùy thuộc vào nhà phát triển, trước khi cam kết thay đổi để quyết định thông tin phiên bản cho điều mà họ kiểm tra. –

6

Một giải pháp là sử dụng MSBuild runner và viết kịch bản MSBuild đọc thông tin phiên bản từ tệp AssemblyInfo, đặt phiên bản TeamCity build thành giá trị đó trong khi chạy bản dựng, sau đó tăng phần số bản dựng của phiên bản đó và ghi giá trị trở lại AssemblyInfo.

Điều này không đặc biệt nhỏ, vì bạn cần hiểu về cách viết kịch bản MSBuild tùy chỉnh và bạn có thể cần sử dụng một số tác vụ cộng đồng, vv để đọc/ghi thông tin phiên bản. Chúng tôi cũng sử dụng khái niệm về tệp AssemblyInfo toàn cầu, tất cả các tham chiếu của chúng tôi đều được tham chiếu (sử dụng Thêm liên kết trong VS), và do đó chúng tôi chỉ cần cập nhật một tệp trong khi xây dựng.

Có một bài viết xuất sắc here, mô tả thực hiện các tác vụ CI chung với MSBuild. Ông đang sử dụng CruiseControl.NET, nhưng phần lớn vẫn áp dụng. Nếu bạn đang chạy TeamCity 6.5 mặc dù, tôi sẽ xem xét sử dụng các tính năng xây dựng của nó độc quyền, vì điều này sẽ được dễ dàng hơn nhiều để duy trì hơn một kịch bản MSBuild tùy chỉnh.

+1

Tất cả điều này có ý nghĩa. Có hướng dẫn nào để hoàn thành điều này không? Tôi chưa bao giờ làm việc với MSBuild trước đây. Bạn có ví dụ cụ thể nào không? Đã cập nhật – Dzejms

+0

câu trả lời. – devdigital

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