2009-10-25 28 views
17

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

+0

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

Trả lời

13

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.

+5

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? –

+0

@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

+0

@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). –

2

Làm thế nào để bạn cảm nhận về một Visual Studio addin làm việc đó?

+0

Heh, không biết điều này, có vẻ thú vị. – RedGlyph

+0

Không giống như addin cho phép sử dụng số sửa đổi Subversion làm giá trị mặc dù. –

+0

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

2

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à

  • cuộc gọi 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);
  • sửa đổi tệp Thuộc tính \ AssemblyInfo.cs của bạn cho phù hợp.

Đ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.

1

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

7

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.

+0

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

+0

@jpierson - Tôi thành thật không thử, vì vậy tôi không biết –

+1

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: . Bạn sẽ phải viết một dòng cho mỗi tác vụ bạn muốn sử dụng. –

0

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.

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