2010-06-23 36 views
59

Tại sao System.Version trong .NET được định nghĩa là Major.Minor.Build.Revision? Hầu như tất cả mọi người (bao gồm cả tôi) dường như đồng ý rằng bản sửa đổi thuộc về vị trí thứ ba, và "xây dựng" hoặc bất cứ điều gì bạn muốn gọi nó thuộc về cuối cùng.Tại sao System.Version trong .NET được định nghĩa là Major.Minor.Build.Revision?

Microsoft thậm chí có sử dụng các con số theo cách lộn xộn này không, ví dụ: 3.5.3858.2, hay chỉ là tên của họ? Ví dụ, nếu bạn đã viết lớp Phiên bản của riêng bạn với thứ tự Major.Minor.Build.Revision, nó sẽ là thích hợp để trao đổi hai thành phần cuối cùng khi chuyển đổi sang một System.Version, hoặc bạn bỏ qua nó và chỉ giả vờ tên là ngược?

+4

Đây là câu hỏi cảm hứng nhất mà tôi đã nhìn thấy ngày hôm nay ... Tôi đã luôn luôn muốn biết điều này và không bao giờ nghĩ để hỏi! – codekaizen

Trả lời

30

Tôi nghĩ rằng sự nhầm lẫn đến những gì hầu hết xem xét một "phiên bản" và what Microsoft does:

  • tích xây dựng: Một sự khác biệt trong xây dựng số đại diện cho một biên dịch lại của cùng một nguồn. Điều này sẽ phù hợp vì các thay đổi về bộ xử lý, nền tảng hoặc trình biên dịch.

  • Sửa đổi: Các cụm có cùng tên, số lớn và số phiên bản phụ nhưng các bản sửa đổi khác nhau được dự định có thể hoán đổi cho nhau hoàn toàn. Điều này sẽ là thích hợp để sửa chữa một lỗ hổng bảo mật trong một hội đồng phát hành trước đó.

Góc khắc phục bảo mật, có thể phổ biến hơn cho chúng, có vẻ là lý do chính đáng để đặt nó ở vị trí cuối cùng, là thay đổi "nhỏ nhất".

+0

Điều đó có ý nghĩa. Nhưng với lớp phiên bản của riêng bạn bằng cách sử dụng thứ tự major.minor.revision.build, nó sẽ là thích hợp để trao đổi hai thành phần cuối cùng khi chuyển đổi sang một .NET 'System.Version'? Hoặc để chúng một mình và để chúng được gọi bằng những cái tên đối lập trong mỗi cấu trúc? –

+0

@Jake - Tối đa mỗi người làm việc xây dựng, tôi giả sử ... cá nhân tôi * làm * trao đổi chúng, quy ước của tôi thực sự là 'Major.Minor.Revision.ChangeSet', vì vậy tôi có thể lấy mã chính xác chạy kiểm soát nguồn của chúng tôi chỉ bằng cách liếc nhìn số. Vì chúng tôi tích hợp liên tục, thay đổi và xây dựng số đang được đồng nghĩa với chúng tôi có ý nghĩa ... không chắc chắn rằng các công trình ở khắp mọi nơi mặc dù. –

13

Microsoft thậm chí có sử dụng các con số theo cách lộn xộn này không, ví dụ: 3.5.3858.2

Nếu bạn để mặc định, ví dụ: bằng cách chỉ định [assembly: AssemblyVersion("1.1.*")], thì tăng số thứ ba mỗi ngày và số thứ tư là số giây kể từ nửa đêm, chia cho hai giây (để phân biệt nếu có nhiều hơn một bản dựng trong một ngày).

Hầu hết mọi người (kể cả tôi) dường như đồng ý rằng bản sửa đổi thuộc về vị trí thứ ba và "xây dựng" hoặc bất cứ điều gì bạn muốn gọi nó thuộc về cuối cùng.

Microsoft dường như đang sử dụng "xây dựng" làm từ đồng nghĩa của "ngày": có lẽ điều đó liên quan đến ý tưởng "xây dựng hàng ngày"; và "bản sửa đổi" do đó là một phiên bản khác của bản dựng (hàng ngày).

+0

Không thực sự là câu hỏi đang hỏi. Anh ta không hỏi họ là gì, nhưng tại sao họ lại theo thứ tự đặc biệt này. –

+0

@Alastair Pitts - Tôi đã thêm vào câu trả lời của mình để cố gắng giải quyết vấn đề đó. – ChrisW

+0

Tôi đã sửa đổi phiếu giảm giá của mình. :) –

22

Tôi nhận ra mình sắp đến bữa tiệc trễ một chút, nhưng tôi muốn chia sẻ sự tự tin của mình về lý do tại sao thứ tự xây dựng và sửa đổi là "sai". Không quá nhiều khi họ đang ở trong đơn đặt hàng sai, nhưng chúng không nằm trong số bất kỳ thứ tự nào.

Phiên bản của một hội đồng, khi nó đi xuống, Major.Minor. Từ số nói trên link, Microsoft nói, "Các phiên bản tiếp theo của một hội đồng khác nhau chỉ bằng cách xây dựng hoặc sửa đổi số được coi là bản cập nhật Hotfix trước phiên bản." [Nhấn mạnh của tôi]

Xây dựng đại diện cho việc biên dịch lại cùng một nguồn.Sửa đổi đại diện cho một thay đổi mã, nhưng một thay đổi hoàn toàn có thể thay thế được với các phiên bản khác của cùng một phiên bản [Major.Minor]. Nhưng không được ưu tiên hơn người kia.

Vì vậy, trong Tóm lại, đừng nghĩ về nó như:

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 

Nhưng thay vì:

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 
+0

Giải thích này làm cho mọi thứ ít khó hiểu hơn. Thật khó để xác minh rằng tôi có cùng bản sửa đổi .Net được cài đặt trên các máy khác nhau. Cụ thể, số "Sửa đổi" dường như luôn khác nhau giữa các phiên bản hệ điều hành, trong khi các số Chính, Nhỏ và Xây dựng đều giống nhau. Ví dụ. trên Windows 8.1, "... \ Framework64 \ v4.0.30319 \ clr.dll" của tôi là tại 4.0.30319.34014, nhưng trên một máy chủ Win2k8 r1, tệp này là 4.0.30319.18444. – Granger

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