2012-12-18 31 views
11

Giả sử tôi có số phiên bản 1.5. * Được biên dịch là 1.5.4735.28467.Công thức trong .NET cho số phiên bản "*" (ký tự đại diện) là gì?

Công thức để nhận 4735 và 28467 là gì?

+1

lớn, nhỏ, xây dựng, sửa đổi. Việc xây dựng và sửa đổi tùy thuộc vào bạn .... –

+0

http://blogs.msdn.com/b/jensenh/archive/2005/11/11/491779.aspx. Nhưng đó là dành cho Microsoft Office; Tôi không biết nếu nó hoạt động theo cùng một cách cho các.NET Framework. –

+7

Build = DateTime.Today.Subtract (ngày giờ mới (2000, 1, 1)). Revision = (int) DateTime.Now.Subtract (DateTime.Today) .TotalSeconds/2; Quá xấu điều này đã đóng; bản sao bị cáo buộc là một câu hỏi khác ... – Daniel

Trả lời

18

Xin lưu ý:các công cụ/quy tắc/lược đồ/macro/bổ sung/etc thay thế để kiểm soát phiên bản theo cách khác; nếu sử dụng chúng rõ ràng là xóa đi những điều sau đây.

Tuy nhiên, đây là cách một phiên bản "*" được tính toán để .build.revision trong một vani Visual Studio/NET quá trình xây dựng:

Khi xác định một phiên bản, bạn phải chỉ định ít nhất lớn. Nếu bạn chỉ định lớn và nhỏ, bạn có thể chỉ định dấu hoa thị (*) cho xây dựng. Điều này sẽ gây build là bằng với số ngày kể từ ngày 01 tháng một năm 2000 giờ địa phương, và cho sửa đổi là bằng với số giây kể từ nửa đêm theo giờ địa phương, chia cho 2.

Xem Coding Horror: Determining Build Date the hard wayMSDN: AssemblyVersionAttribute. Hành vi mở rộng mặc định này được ghi lại trong lớp AssemblyVersionAttribute (BCL!) và không phải hành vi trình biên dịch VS đặc biệt (xem nhận xét của Daniel) và không chỉ hoạt động của trình biên dịch.


Đây là một thực hiện của công thức (như chiết xuất từ ​​bình luận Daniel):

int Build = DateTime.Today.Subtract(new DateTime(2000, 1, 1)).Days; 
int Revision = (int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds/2; 
+3

Đó là hành vi trình biên dịch chắc chắn nhất. Trình biên dịch không khởi tạo bất kỳ thuộc tính nào; nó chỉ mã hóa các giá trị đối số trong siêu dữ liệu. Nhưng số được thay thế tại thời gian biên dịch; nó phải là một trường hợp đặc biệt trong trình biên dịch. Không có cách nào để viết một thuộc tính tùy chỉnh của bạn để làm một cái gì đó tương tự. – Daniel

+0

@Daniel Đó là một lý lẽ tốt. Tôi ước tôi có thể tìm thấy một tham chiếu VS (không .NET) về cách các số phiên bản hoạt động. –

+2

Bạn cũng có thể xem triển khai trong Roslyn: http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis/VersionHelper.cs,95 – eug

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