2009-08-14 34 views
14

Có cách nào thông minh để nhận ngày và giờ khi dll được xây dựng/biên dịch không?Biên dịch ngày và giờ

Tôi đang sử dụng số phiên bản lắp ráp và phản chiếu để truy xuất và hiển thị thông tin này khi ứng dụng được triển khai. Nhưng trong một số trường hợp, sẽ thuận tiện hơn khi biết khi thì dll thực sự được biên dịch thay vì số phiên bản tăng tự động. Tôi không nghĩ rằng ngày sửa đổi trên tập tin dll chính nó là đáng tin cậy do cách ứng dụng được triển khai.

Dim assemblies = AppDomain.CurrentDomain.GetAssemblies 
Dim assemblyName As String 
Dim assemblyVersion As String 

For Each assembly In assemblies 
    assemblyName = assembly.GetName.Name.ToString 
    assemblyVersion = assembly.GetName.Version.ToString 
    ' How to get the date/time of the build?? 
    ' ... 
Next 

Mọi đề xuất?

Trả lời

17

Nếu bạn đặt phiên bản lắp ráp (thường là trong AssemblyInfo.cs) để Major.Minor.* (ví dụ 1.0.*), sau đó bạn có thể có thể lấy ngày xây dựng trong thời gian chạy với một cái gì đó như thế này:

var version = Assembly.GetExecutingAssembly().GetName().Version; 
DateTime buildDate = new DateTime(2000, 1, 1) 
    .AddDays(version.Build) 
    .AddSeconds(version.Revision*2); 

Khi sử dụng một * cho phần thứ ba và thứ tư của phiên bản lắp ráp, sau đó hai phần này được thiết lập tự động tại thời gian biên dịch để các giá trị sau:

  • phần thứ ba là số ngày kể từ 2000/01/01
  • 01.235.
  • phần thứ tư là số giây kể từ nửa đêm chia cho hai (mặc dù some MSDN pages nói nó là một số ngẫu nhiên)

Oh, và bạn phải chăm sóc tiết kiệm thời gian ban ngày cho mình (ví dụ thêm một giờ nếu đó là thời gian tiết kiệm ánh sáng ban ngày).

+1

Đó là khá tuyệt vời, nó hoạt động như một nét duyên dáng. Cảm ơn! :) –

+0

Bí quyết này đã cứu được ngày của tôi! –

1

gì về:

new FileInfo(Assembly.GetExecutingAssembly().Location).CreationTime; 
+3

Đây không phải là một ý tưởng hay, vì nó không ổn định và có thể dễ dàng thay đổi. Ví dụ, chỉ cần tải xuống một tệp từ một số Máy chủ FTP và xem xét ngày tạo. Bạn sẽ nhận được ngày, khi tập tin được tạo ra trên máy của bạn. Hàng ngàn thông tin sai lệch. Điều này cũng có thể xảy ra (tùy thuộc vào chương trình bạn sử dụng) nếu bạn nén, giải nén tệp hoặc bạn gửi tệp dưới dạng đính kèm qua thư cho ai đó. Trong tất cả các trường hợp này, thời gian tạo là một ứng cử viên tốt để thay đổi. – Oliver

+2

Còn ngày sửa đổi lần cuối thì sao? – joshcomley

+1

Có, theo kinh nghiệm của tôi ngày sửa đổi chính xác hơn ngày được tạo (trong các tệp nơi sửa đổi sau khi tạo không thực sự xảy ra). – Abacus

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