2013-02-05 32 views
8

Chúng tôi đang sử dụng Dịch vụ Foundation Foundation thay vì TFS cục bộ. Giải pháp của chúng tôi được tạo trên Visual Studio 2012. Vấn đề của tôi bây giờ là chúng tôi muốn tất cả các hội đồng có cùng số phiên bản (phần này đã được giải quyết bằng cách sử dụng một CommonAssemblyInfo.cs được liên kết vào tất cả các dự án). Vấn đề tôi đang gặp phải là chúng tôi cần số thay đổi tfs ở chữ số cuối cùng của phiên bản lắp ráp (ví dụ: 1.0.0.4711 trong đó 4711 là số thay đổi). Tôi đã tìm thấy một số ví dụ, nhưng không ai trong số họ làm việc cho tôi. Và có, tôi đặc biệt tìm kiếm ở đây trên stackoverflow rất nhiều.Số Thay đổi thành Thông tin Phiên bản với TFS được lưu trữ

Tôi cũng phải thừa nhận rằng tôi chưa bao giờ nhìn vào kịch bản MSBuild ...

Bất cứ ai có xin vui lòng cho tôi một gợi ý về cách để thực hiện điều này? Ví dụ có thể sử dụng Gói mở rộng MSBuild trên Dịch vụ Foundation Foundation (không phải TFS địa phương) và nếu, làm thế nào để thực hiện điều đó?

Như mọi khi, thời gian là kẻ thù tồi tệ nhất của tôi ...

Trả lời

2

Lưu ý rằng từ năm 2010 TFS sử dụng Windows Workflow cho việc xây dựng các gói công việc gọi msbuild để biên dịch các dự án chỉ - trong khi có thể của nó để vượt qua changeset cách này để msbuild của nó khá nhiều hoa bia. Tiếp theo thỏa thuận với vấn đề của bạn, tuy nhiên giải pháp liên kết là phức tạp hơn mà cần thiết: Can assembly version been automatically updated with each TFS 2010 Build?

Đây là một trong hàng loạt tốt nhất của hướng dẫn về phong tục xây dựng các hoạt động, tác giả là trên stack cũng tôi tin rằng, một specificly về versioning http://www.ewaldhofman.nl/post/2010/05/13/Customize-Team-Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx

Nói tóm lại bạn cần một hoạt động tùy chỉnh để chạy trước khi biên dịch trên các tập tin nguồn, tìm tất cả các file CommonAssemblyInfo.cs, ăn danh sách này để hoạt động tùy chỉnh của bạn, nó sẽ thay đổi các giá trị bên trong với giá trị thông qua các số phiên bản đầy đủ hoặc chỉ changeset và tùy chọn kiểm tra trong sự thay đổi (có lẽ không phải kể từ khi changeset của bạn sẽ được ra khỏi đồng bộ sau đó).

Bạn cũng có thể xem https://tfsbuildextensions.codeplex.com/ bộ hoạt động có hoạt động TfsVersion trong số đó, ít nhất nó sẽ cung cấp các ví dụ.

Chức năng cần cho điều này sẽ có sẵn thông qua Team Explorer và kiểm soát nguồn - Các hoạt động tùy chỉnh và xây dựng các mẫu thường được đặt trong thư mục trong nhóm dự án gốc của bạn - vị trí của thư mục này được xác định cho bộ điều khiển xây dựng. thông qua phần xây dựng đội thám hiểm.

changeset có sẵn từ giá trị BuildDetail.SourceGetVersion, không chắc chắn nếu điều này đã được cố định/thay đổi vào năm 2012 tuy nhiên có 2 vấn đề về giá trị này trong 2010

  1. doesnt sự tôn trọng của nó GetVersion ghi đè trong mặc định xây dựng mẫu - bạn sẽ cần cập nhật nếu ghi đè được sử dụng
  2. Khi chạy phiên bản mới nhất (không ghi đè), nó sẽ nhận số thay đổi cuối cùng từ tfs - tùy thuộc vào các nhánh của bạn, có thể không giống như thay đổi 'cuối cùng' cho nhánh xây dựng . Bạn sẽ phải sống với điều này, cung cấp ghi đè cho mỗi bản dựng hoặc triển khai hoạt động kiểm tra lịch sử chi nhánh cho giá trị changeset cuối cùng và ghi đè nó lần nữa.

Cần lưu ý rằng GetVersion sẽ có thể chấp nhận bất kỳ phiên bản nguồn - thay đổi, ngày tháng, nhãn, v.v. Tôi đã phát xung quanh đủ điều này để cung cấp thêm chi tiết cho bạn.

+0

Cảm ơn rất nhiều, có một số liên kết rất hữu ích trong bài đăng của bạn! – AlexK

+0

Tuy nhiên, tôi vẫn chưa tìm được cách làm việc để nhận số thay đổi ... Tôi đã tìm thấy một số bài đăng sử dụng Thẻ dường như không hoạt động trong VS2012 ... Đó là hình phạt để làm việc với công nghệ tiên tiến. – AlexK

+0

Đã chỉnh sửa về số thay đổi – drk

0

Tôi đã sử dụng Wintellect's solution - Chỉ tạo MSBuild, không cần ma thuật TFS. Tôi cũng đã thêm vào tệp CSharp được tạo tự động:
[assembly:AssemblyInformationalVersion("$(BuildNumber)")]
Vì vậy, tôi nhận được số bản dựng TFS.

+3

Lưu ý rằng BuildNumber không thay đổi - nó có thể không chứa thay đổi gì cả - nó không thực hiện mặc định. – drk

0

Colin Dembovsky đã viết great overview of doing version embedding using the new pre-build script setting in TFS 2013 build definitions.

Số changeset có thể dễ dàng truy cập trong quá trình tạo trước trong biến môi trường TF_BUILD_SOURCEGETVERSION. Tôi đã có thể sử dụng điều này để nhúng giá trị changeset trong các tệp nhị phân của chúng tôi bằng cách sử dụng tập lệnh dựa trên công việc của Dembovsky ở trên. (Tôi đã sử dụng Perl, chứ không phải powerhell, vì vậy bạn có thể không muốn nhìn thấy nó ;-)

Cách tiếp cận này không yêu cầu bất kỳ thay đổi nào đối với quy trình xây dựng khiến nó trở thành một chiến thắng lớn đối với tôi.

+0

Vì vậy, phiên bản của tập lệnh của bạn với số thay đổi trông như thế nào? –

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