2009-06-10 35 views
18

Tôi có hệ thống xây dựng tự động bằng CruiseControl. Tôi đang sử dụng SvnRevisionLabeller để nhận chuỗi phiên bản để sử dụng. Với chuỗi này tôi có thể sử dụng nant để cập nhật AssemblyInfo.cs vì vậy khi tôi xây dựng nó có chuỗi xây dựng đúng. Tôi cũng có thể sử dụng nhãn CC này để gắn thẻ kho lưu trữ lật đổ.Có nên đặt AssemblyInfo.cs trong điều khiển phiên bản không?

Vì vậy, tất cả mọi thứ được kết
- CCNet nhãn Build
- Executable (Thông tin hội)
- Phiên bản Control (subverson tag)

Bây giờ nơi tôi có một vấn đề là nếu tôi muốn cố gắng để xây dựng lại một hình ảnh cũ từ kho lưu trữ. Kể từ AssemblyInfo.cs không phải là dưới sự kiểm soát phiên bản mà là một tập tin được tạo ra, khi tôi bây giờ cố gắng xây dựng, thông tin versioning sẽ không giống như khi phiên bản này được xây dựng bằng CruiseControl. Tôi muốn có thể tạo chính xác cùng một hình ảnh bất kể nó được xây dựng trong khi xây dựng CC hay vào một ngày sau đó khi kiểm tra từ Subversion.

Tôi biết rằng thường không được khuyến nghị, nhưng tôi có nên kiểm tra tệp assemblyInfo.cs sau mỗi lần xây dựng để khi tôi xây dựng sau đó từ một svn kiểm tra thông tin phiên bản chính xác sẽ được sử dụng?

Cảm ơn, Liam

Trả lời

2

tôi luôn luôn có nó kiểm tra. Trong thực tế, tôi tin rằng đây là hành vi mặc định với Team System Source Control.

+0

Tôi đang sử dụng Subversion và CrusieControl.NET. Tôi xây dựng bằng cách sử dụng một kịch bản NAnt. Tất cả những gì tôi đã đọc là AssemblyInfo.cs là một đầu ra được tạo ra trong quá trình xây dựng.Vì vậy, trình tự xây dựng là: - CCNET (SVN kích hoạt bởi một check-in @say phiên bản kho lưu trữ 100) Nant gọi msbuild gọi AssemblyInfo.cs được tạo ra afgter xây dựng Đừng bây giờ tôi check-in AssemblyInfo.cs ? Nếu kiểm tra trong kho lưu trữ sau đó sẽ được tại Rev 101. Vì vậy, mục tiêu của tôi có AssemblyInfo.cs phù hợp với phiên bản xây dựng không được đáp ứng. Làm thế nào để tôi làm điều này? –

+0

Tôi tin rằng lý do bạn không muốn kiểm tra trong AssemblyInfo.cs trong trường hợp của bạn là bởi vì hệ thống CI của bạn đang tạo ra nó. Với một xây dựng bình thường bao gồm cả cách TFS xây dựng máy chủ làm điều đó AssemblyInfo.cs được kiểm tra và không được tạo ra cho mỗi xây dựng. – majinnaibu

7

Hoặc không phiên bản AssemblyInfo.cs ở tất cả hoặc đặt "phiên bản dành cho nhà phát triển" vào kho lưu trữ và có CruiseControl.Net svn-hoàn nguyên sau khi xây dựng (Tôi làm sau để xây dựng trên máy trạm của nhà phát triển dễ dàng dập tắt từ những "chính thức" được tải xuống từ CruiseControl.Net).

Để tái tạo cùng một nhãn xây dựng sau - bạn phải thực hiện việc xây dựng lại bằng cách gọi MSBuild/NAnt bằng tay, chỉ cần chuyển đến CCNetLabel được đặt thành giá trị phù hợp và bạn sẽ nhận được các phiên bản lắp ráp giống như xây dựng được gọi từ CruiseControl.Net (MSBuild: /p:CCNetLabel=1.4.2.333, NAnt: -D:CCNetLabel=1.4.2.333).

7

Tôi sử dụng tệp CommonAssemblyInfo.cs mà tôi thêm liên kết vào trong mọi dự án.

Thuộc tính duy nhất tôi có trong tệp này là AssemblyFileVersion và có CC.Net/Msbuild cập nhật phiên bản mỗi bản dựng.

Đảm bảo mọi dự án bao gồm CommonAssemblyInfo.cs không có thuộc tính trùng lặp trong AssemblyInfo.cs.

Nếu bạn kiểm tra mã nguồn CC.Net bạn sẽ thấy đó là cách chúng được xây dựng cấu hình.

0

Chúng tôi có một kịch bản MSBuild tạo tất cả các tệp AssemblyInfo.cs cần thiết trước khi xây dựng. Bằng cách này tôi cũng có thể sử dụng số sửa đổi SVN trong các phiên bản lắp ráp. Các tệp AssemblyInfo.cs không được kiểm tra vào SVN (chúng bị bỏ qua để chúng không làm phiền mọi người) nhưng được tạo trước khi xây dựng (không quan trọng cho dù đó là một kịch bản xây dựng tự động hay từ VS).

Tôi cũng cung cấp một tệp lô để quản lý các tệp AssemblyInfo.cs để các nhà phát triển không cần phải bận tâm với các chi tiết.

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