Tôi đang sử dụng TortoiseSVN và Visual Studio 2008. Có cách nào để cập nhật assemblyinfo.cs của dự án của tôi với phiên bản svn trong mọi bản dựng không? .Phiên bản phụ AssemblyInfo.cs và TortoiseSVN
Ví dụ, 1.0.0 [phiên bản svn của] -> 1.0.0.12
Tôi đang sử dụng TortoiseSVN và Visual Studio 2008. Có cách nào để cập nhật assemblyinfo.cs của dự án của tôi với phiên bản svn trong mọi bản dựng không? .Phiên bản phụ AssemblyInfo.cs và TortoiseSVN
Ví dụ, 1.0.0 [phiên bản svn của] -> 1.0.0.12
Bạn có thể sử dụng công cụ SubWCRev mà đi kèm với TortoiseSVN (cũng có sẵn riêng).
Hoặc chạy từ dòng lệnh hoặc sử dụng số COM-Object nó cung cấp.
Công cụ dòng lệnh SubWCRev replaces keywords bên trong tệp có thông tin từ bản sao làm việc svn của bạn. An example được hiển thị trong tài liệu.
Nhưng nếu AssembyInfo.cs được sửa đổi nó xuất hiện trong bản sao làm việc dưới dạng sửa đổi. Nếu bạn cam kết nó và xây dựng lại nó thay đổi một lần nữa. Làm thế nào điều này có thể được thực hiện mà không sửa đổi các tập tin được kiểm soát nguồn? –
@Assaf: Đó là lý do tại sao người ta không nên kiểm tra trong tệp AssemblyInfo.cs nếu nó được tạo tự động. – chiccodoro
@chiccodoro, tôi nghĩ bạn đã bỏ lỡ câu hỏi của tôi. Một phần của chuỗi phiên bản vẫn không đổi và một phần được tạo tự động (số cuối cùng). –
Làm thế nào để bạn cảm nhận về một Visual Studio addin làm việc đó?
Heh, không biết điều này, có vẻ thú vị. – RedGlyph
Không giống như addin cho phép sử dụng số sửa đổi Subversion làm giá trị mặc dù. –
Tôi đã tạo một phiên bản SVN plug-in (http://happyturtle.codeplex.com/) cho dự án Xây dựng Phiên bản Gia tăng. Trình cắm thêm SVN này sẽ kéo số sửa đổi thay đổi mới nhất từ bản sao làm việc của bạn và cho phép bạn sử dụng số đó trong số phiên bản của mình, điều này sẽ thực hiện chính xác những gì bạn đang cố gắng làm. – grimus
Vâng, bạn có thể thêm một sự kiện trước khi xây dựng mà các cuộc gọi một kịch bản mà
svn info
để trích xuất các số phiên bản hiện tại (nếu bạn làm một bản cập nhật trước đó, bạn có thể trực tiếp bao gồm các từ khóa $Revision$
trong một tập tin, kiểm tra cũng this post);Điều tôi thường làm là chuyển đổi mẫu AssemblyInfo.cs khi dự án được tạo. Kịch bản là cần thiết để thích ứng với hình thức $ Revision $ đến cú pháp của tệp này, thật không may.
Các đặc tính thú vị là (nơi chuỗi mẫu là giữa '$'):
[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev$")]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev$")]
Edit: svn info
là một phần của khách hàng SVN tiêu chuẩn, không TortoiseSVN như đã chỉ ra trong bài khác. Dễ cài đặt mặc dù. Tuy nhiên, TortoiseSVN đi kèm với SubWCRev.exe
chuyển đổi tệp có thay thế từ khóa, do đó, nó sẽ thực hiện thủ thuật nếu bạn cập nhật bản sao cục bộ của mình.
Trong Visual Studio 2008, bạn có thể xác định sự kiện dựng sẵn có thể khởi chạy tập lệnh hoặc chương trình nhỏ. Trong tập lệnh hoặc chương trình này, bạn có thể sử dụng lệnh svnversion để nhận sửa đổi kho, sau đó phân tích cú pháp AssemblyInfo.cs của bạn và sửa đổi số phiên bản thành những gì bạn mong muốn.
Tôi không chắc chắn nếu đi kèm với TortoiseSVN svnversion, nhưng nó đi kèm với Windows SVN build provided by CollabNet
Bạn có thể sử dụng $Rev$
svn keyword nhưng điều đó sẽ cung cấp cho bạn phiên bản cuối cùng của tập tin, tôi nghĩ rằng bạn muốn nhận được số sửa đổi HEAD
.
tặng một cái nhìn cho câu hỏi này:
Tôi làm điều này trong build script tôi:
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
sử dụng community build tasks. Về cơ bản, điều này áp dụng một regex cho AssemblyInfo.cs, thay thế bản sửa đổi hiện tại bằng bản sửa đổi svn.
Bất kỳ cách nào để sử dụng các tác vụ xây dựng này mà không cần cài đặt chúng? Nói cách khác là nó có thể có chúng được phiên bản cùng với mã nguồn để các nhà phát triển không phải nhận thức được chúng hoặc lo lắng về việc cài đặt chúng? – jpierson
@jpierson - Tôi thành thật không thử, vì vậy tôi không biết –
Có, điều đó là có thể. Bạn phải có dll versionned (bạn sẽ tìm thấy mã ở đây: http://msbuildtasks.tigris.org/) và viết dòng sau:
Tôi đã tạo một SVN version plug-in cho số Build Version Increment project (được đặt tên theo câu trả lời của popester). Trình cắm thêm SVN này sẽ kéo số sửa đổi thay đổi mới nhất từ bản sao làm việc của bạn và cho phép bạn sử dụng số đó trong số phiên bản của mình, điều này sẽ thực hiện chính xác những gì bạn đang cố gắng làm.
Bằng cách "lật đổ dự án của tôi", bạn không có nghĩa là "assemblyinfo.cs của dự án của tôi"? Nếu không thì câu đó không có ý nghĩa với tôi. – chiccodoro