2011-01-20 35 views
8

Tôi muốn có thể xem một hội đồng và nhanh chóng xác định nhánh nào được xây dựng.TFS Xây dựng: bao gồm tên chi nhánh trong trường "số xây dựng" của các cụm

Cách tốt nhất để cofigure TFS Build bao gồm tên của nhánh hiện tại trong trường Build Number (hoặc trường thích hợp hơn) của assembly mà nó tạo ra?

+2

Tôi khuyên bạn nên sử dụng [AssemblyConfigurationAttribute] (http://msdn.microsoft.com/en-us/library/system.reflection.assemblyconfigurationattribute.aspx) vì mục đích này được thiết kế để sử dụng cho cấu hình xây dựng văn bản dạng tự do thông tin. Tôi cũng khuyên bạn nên chuyển sang một mẫu mà bạn có một tệp [VersionInfo] (http://stackoverflow.com/questions/62353/what-are-the-best-practices-for-using-assembly-attributes) được chia sẻ giữa các dự án để bạn có thể cập nhật thông tin này ở một nơi duy nhất. Tôi không biết gì về TFS, vì vậy không thể giúp bạn với điều đó. –

+0

@chibacity Chi nhánh không phải là cấu hình. AssemblyInformationalVersionAttribute dường như là một nơi thích hợp hơn để lưu trữ thông tin đó. Đó là một chút lạ mà không có một thuộc tính lắp ráp một cách rõ ràng cho các chi nhánh. – mhenry1384

Trả lời

4

Hãy nhìn vào Task Version trong http://msbuildtasks.tigris.org/

Nó sẽ cho phép bạn cập nhật các AssemblyInfo.cs về xây dựng.

Đó vẫn rời khỏi "làm thế nào" để xác định các chi nhánh ...

Trên nguy cơ của việc có một cuộc tranh luận tôn giáo trên phiên bản đánh số bạn có thể dành một phần của phần major.minor.build.revision đến chi nhánh. Ví dụ: major.minor chỉ theo số phiên bản 'bên ngoài/thương mại' của bạn, bản dựng là biểu mẫu TFS và bản sửa đổi 1 cho biết nhánh chính của bạn, bản sửa đổi 2 biểu thị một nhánh nhất định. Bạn cũng có thể sử dụng các thuộc tính phiên bản lắp ráp khác, như AssemblyInformationalAttribute để lưu trữ một id nhánh trong đó.

Tôi không hoàn thành cập nhật cách bạn có thể phát hiện nhánh bạn đang truy cập nhưng trường hợp xấu nhất chỉ là vấn đề nhận thư mục hiện tại và áp dụng một số logic để suy ra tên chi nhánh. Đầu ra của chi nhánh tf. lệnh cũng sẽ cung cấp cho bạn tên chi nhánh cho một không gian làm việc hiện tại nhưng bạn sẽ cần một nhiệm vụ tùy chỉnh để chỉ trích xuất dòng đầu tiên.

Không phải là câu trả lời cắm và phát nhưng có thể mang lại cho bạn đúng hướng.

+0

Điểm xuất phát tuyệt vời, cảm ơn. Tôi ngạc nhiên đây không phải là một câu hỏi thường gặp với một giải pháp đơn giản. –

+0

Tôi biết đây là câu trả lời cũ hơn; chỉ cần bình luận cho mục đích cập nhật. Ít nhất trong TFS 2013 và TFS 2015, 'tf branch .' dường như không hoạt động. 'tf branch' yêu cầu một đối số nguồn và đích, và dường như tạo ra một nhánh với tên đích từ thư mục nguồn.[nhấp chuột vào tài liệu] (https://msdn.microsoft.com/en-us/library/d73s8b27.aspx) –

0

Phiên bản rất dễ dàng về việc nhận và cập nhật các tệp AssemblyInfo.cs khác nhau.

Tôi sẽ tổ chức cấu trúc TFS của bạn theo cách tương tự như các quy ước Subversion, do đó, có một thư mục thân cây, thẻ và thư mục.

Thông qua đặt tên nhất quán, bạn có thể đảm bảo rằng tệp MSBuild cụ thể của bạn luôn là một số thư mục được đặt từ một trong hai thân từ tên chi nhánh cụ thể.

Có một nhiệm vụ MSBuild tùy chỉnh hoạt động cho bạn (bằng cách điều hướng hệ thống phân cấp thư mục TFS) và cấp dữ liệu này vào thuộc tính của bạn được sử dụng để cập nhật AssemblyInformationalAttribute. Bạn có thể sử dụng tác vụ FileUpdate từ http://msbuildtasks.tigris.org/ để thực hiện Regex thay thế trên các tệp AssemblyInfo.cs của bạn.

+1

Tôi nghĩ bạn có nghĩa là AssemblyInformationalVersionAttribute. – mhenry1384

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