2009-09-05 24 views
5

Tôi muốn thực hiện một mục tiêu trong kịch bản MSBuild tôi rằng:Cập nhật thông tin phiên bản với MSBuild (sau binaries biên soạn)

  • Fetch SVN sửa đổi/datetime từ thư mục nguồn ('info svn' lệnh)
  • Cập nhật Tài nguyên VERSIONINFO từ các tệp .EXE và .DLL được tạo bởi mục tiêu 'build'

Có điều gì đó đã sẵn sàng để thực hiện việc này? Tôi đang yêu cầu ngay trước khi tái bánh xe khác ...

Tôi đưa ra một cái nhìn vào http://msbuildextensionpack.codeplex.com

+0

+1 cho câu hỏi hay, tôi muốn tự làm điều này. – 7wp

+0

Tôi cũng vậy! - Nhưng giải pháp nội bộ (vụng về) của chúng tôi vẫn hoạt động tốt. Vì vậy ... :) –

Trả lời

5

MSBuild Community Tasks Project là bạn của bạn. Kiểm tra nhiệm vụ "SvnInfo" của họ.

Ngoài ra, Daniel Doubrovkine của ResourceLib là một mảnh tuyệt vời của công việc và có thể tránh cho bạn rất nhiều đau đầu khi cố gắng gỡ rối những mớ hỗn độn tạo VERSIONINFO (được ở đó, làm điều đó ...)

+0

Cảm ơn bạn rất nhiều! –

+0

Lưu ý rằng ResourceLib đã chuyển sang Github: https://github.com/dblock/resourcelib –

1

Dễ dàng hơn để làm điều này trước khi biên dịch bằng cách viết một tập tin AssemblyInfo (hoặc bất kỳ tập tin với các thuộc tính lắp ráp) thats bao gồm trong các dự án của bạn.

Ví dụ về cách viết này trong PowerShell tìm thấy ở đây: https://github.com/craigbeck/rhino-esb/blob/master/psake_ext.ps1#L7-46

Một caveat - các phiên bản trong .net không chỉ bất kỳ chuỗi nhưng ushort s có nghĩa là họ có một tối đa của 65535 (xem tài liệu here). Nếu bạn sử dụng sửa đổi svn (như chúng tôi đã làm tại một thời điểm) xây dựng của bạn sẽ phá vỡ một khi nó vượt quá con số ma thuật đó.

Tại sao bạn sẽ cố thực hiện việc này sau khi biên dịch?

+0

Các tệp nhị phân được tạo từ 5 trình biên dịch khác nhau. Không ai trong số họ cho. Dù sao, cảm ơn cho tip về ushorts. –

+0

OK, giờ tôi còn tò mò hơn ... ngôn ngữ/trình biên dịch nào? Đề cập đến các DLL và EXE làm tôi cho rằng bạn đang nói về phát triển chuẩn .Net (tức là C#/VB, Visual Studio, v.v.). Nếu đó không phải là trường hợp, tại sao bạn chọn MSBuild? – craigb

+0

Kể từ VS2010, các dự án C++ gốc được xây dựng bằng cách sử dụng msbuild. Có các công cụ để cập nhật thông tin phiên bản Assembly nhưng đối với người bản xứ, phiên bản vẫn được kiểm soát thông qua tài nguyên VERSIONINFO của ứng dụng (thường là trong tệp .rc). – jschroedl

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