Stack Overflow có số phiên bản lật đổ ở dưới cùng:
svn sửa đổi: 679
Tôi muốn sử dụng lập phiên bản tự động như vậy với .NET Web Site/Application
các dự án / giải pháp WPD, Windows Forms, WPD của tôi .
Làm cách nào để thực hiện điều này?
Stack Overflow có số phiên bản lật đổ ở dưới cùng:
svn sửa đổi: 679
Tôi muốn sử dụng lập phiên bản tự động như vậy với .NET Web Site/Application
các dự án / giải pháp WPD, Windows Forms, WPD của tôi .
Làm cách nào để thực hiện điều này?
Câu trả lời:
Có vẻ như Jeff đang sử dụng CruiseControl.NET dựa trên một số nội dung thông qua bản ghi podcast. Điều này dường như có khả năng triển khai tự động từ kiểm soát nguồn đến sản xuất. Đây có thể là nơi mà việc chèn đang diễn ra?
Chúng tôi làm điều này với xUnit.net cho các bản dựng tự động của chúng tôi. Chúng tôi sử dụng CruiseControl.net
(và đang dùng thử TeamCity). Tác vụ MSBuild mà chúng tôi chạy để tích hợp liên tục sẽ tự động thay đổi số bản dựng cho chúng tôi, vì vậy tệp ZIP bản dựng kết quả chứa một tập hợp các tệp DLL và EXE được phiên bản phù hợp.
Tệp MSBuild của chúng tôi chứa tham chiếu usingTask cho một DLL thay thế biểu thức chính quy: (bạn có thể sử dụng DLL này, vì nó cũng được cấp phép bởi MS-PL)
<UsingTask AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll" TaskName = "CodePlex.MSBuildTasks.RegexReplace" />
Tiếp theo, chúng tôi trích xuất số bản dựng, được cung cấp tự động bởi hệ thống CI. Bạn cũng có thể yêu cầu nhà cung cấp kiểm soát nguồn của mình cung cấp số bản sửa đổi nguồn nếu bạn muốn, nhưng chúng tôi thấy rằng số bản dựng trong hệ thống CI hữu ích hơn, bởi vì không chỉ có thể xem kết quả tích hợp theo số bản dựng CI mà còn cung cấp liên kết trở lại (các) tập hợp thay đổi được bao gồm trong bản dựng.
<! - Xếp tầng cố gắng tìm số bản dựng -> <Điều kiện PropertyGroup = "'$ (BuildNumber)' == ''"> <BuildNumber> $ (BUILD_NUMBER) </BuildNumber> </PropertyGroup> <Điều kiện PropertyGroup = "'$ (BuildNumber)' == ''"> <BuildNumber> $ (ccnetlabel) </BuildNumber> </PropertyGroup> <Điều kiện PropertyGroup = "'$ (BuildNumber)' == ''"> <BuildNumber> 0 </BuildNumber> </PropertyGroup>
(Chúng tôi thử BUILD_NUMBER, từ TeamCity, sau đó ccnetlabel, từ CC.net và nếu không có, chúng tôi mặc định là 0 để chúng tôi có thể kiểm tra tập lệnh tạo tự động theo cách thủ công.)
Tiếp theo, chúng tôi có một nhiệm vụ đặt số bản dựng thành tệp GlobalAssemblyInfo.cs mà chúng tôi liên kết vào tất cả các dự án của mình:
<Target Name = "SetVersionNumber"> <RegexReplace Pattern = 'AssemblyVersion \ ("(\ d + \. \ D + \. \ D +) \. \ D +" \)' Replacement = 'AssemblyVersion ("$ 1. $ (BuildNumber)")' Files = 'GlobalAssemblyInfo.cs' /> <Exec Command = "cred -r xunit.installer \ App.manifest" /> </Target>
Thao tác này tìm thuộc tính AssemblyVersion và thay thế số phiên bản abcd bằng abcBuildNumber. Chúng tôi thường sẽ để nguồn được kiểm tra trong cây với ba phần đầu tiên của số trình tạo là cố định và phần thứ tư là 0 (fe, hôm nay là 1.0.2.0).
Trong quá trình xây dựng của bạn, hãy đảm bảo rằng tác vụ SetVersionNumber đứng trước tác vụ xây dựng của bạn. Cuối cùng, chúng tôi sử dụng tác vụ Zip của mình để nén các kết quả xây dựng để chúng tôi có lịch sử về các tệp nhị phân cho mọi bản dựng tự động.
Bạn có thể làm điều đó bằng cách thêm phần sau vào bất kỳ đâu trong mã của bạn
$Id:$
Vì vậy, ví dụ @Jeff đã làm:
<div id="svnrevision">svn revision: $Id:$</div>
và khi được kiểm tra trong máy chủ đã thay thế $ Id: $ bằng số sửa đổi hiện tại. Tôi cũng tìm thấy tài liệu tham khảo này .
Ngoài ra còn có $ Ngày: $ , $ Rev: $ , $ Bản sửa đổi: $
Nếu bạn đang sử dụng ASP.Net MVC
(như StackOverflow), tôi đã viết một hướng dẫn 3 bước dễ thực hiện về cách tự động tải và hiển thị bản sửa đổi SVN mới nhất . Người hướng dẫn được truyền cảm hứng khi tôi tự nghĩ về câu hỏi này! : o)
@Balloon Nếu bạn đang sử dụng TortoiseSVN, bạn có thể sử dụng chương trình SubWCRev đóng gói . Nó truy vấn một bản sao đang hoạt động và chỉ cho bạn biết số bản sửa đổi cao nhất. Phải thừa nhận rằng đây có vẻ là cách tiếp cận phía máy khách đối với vấn đề phía máy chủ, nhưng vì đây là một chương trình dòng lệnh tốt, bạn sẽ có thể nắm bắt đầu ra của nó để sử dụng khá dễ dàng.
$rev
và những người khác thích nó là bản sửa đổi cho các tệp riêng lẻ, vì vậy chúng sẽ không thay đổi trừ khi tệp thay đổi. Số trên trang web là (rất có thể, tôi đang giả định ở đây) số sửa đổi svn cho toàn bộ dự án. Điều đó khác với các bản sửa đổi tệp mà những người khác đã trỏ tới.
Trong trường hợp này, tôi giả định rằng CCNET đang lấy số sửa đổi của dự án và viết lại một phần của trang web với số đó. Bất kỳ giải pháp CI nào cũng có thể thực hiện việc này, hãy tự thiết lập điều này với CCNET và Teamcity (mặc dù không phải là các trang web, nhưng tự động lập phiên bản của các phiên bản triển khai / lắp ráp).
Để bạn làm điều này, hãy sử dụng giải pháp CI hỗ trợ nó hoặc sử dụng quy trình xây dựng của bạn (MSbuild / Nant) để lưu trữ phiên bản đó và ghi nó vào các tệp trước khi "triển khai" nó.
Để thêm vào câu trả lời của @ BradWilson: "Bạn cũng có thể yêu cầu nhà cung cấp kiểm soát nguồn cung cấp số sửa đổi nguồn nếu bạn muốn"
Để kết nối Subversion và MSBuild: Dự án Nhiệm vụ Cộng đồng MSBuild