Không biết tôi đã tìm thấy thông tin này ở đâu. Nhưng tôi tìm thấy điều này trên internet "một nơi nào đó".
Điều này cập nhật tất cả các tệp AssemblyInfo.cs trước khi quá trình tạo diễn ra.
Hoạt động như một sự quyến rũ. Tất cả các exe và dll của tôi hiển thị như 1.2.3.333 (Nếu "333" là bản sửa đổi SVN tại thời điểm đó.) (Và phiên bản gốc trong tệp AssemblyInfo.cs được liệt kê là "1.2.3.0")
$ (ProjectDir) (Nơi file sln tôi cư trú)
$ (SVNToolPath) (điểm để svn.exe)
là các biến tùy chỉnh của tôi thì trong tờ khai/định nghĩa không được định nghĩa dưới đây.
http://msbuildtasks.tigris.org/ và/hoặc https://github.com/loresoft/msbuildtasks có nhiệm vụ (FileUpdate và svnversion).
<Target Name="SubVersionBeforeBuildVersionTagItUp">
<ItemGroup>
<AssemblyInfoFiles Include="$(ProjectDir)\**\*AssemblyInfo.cs" />
</ItemGroup>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)">
<Output TaskParameter="Revision" PropertyName="MySubVersionRevision" />
</SvnVersion>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$1.$2.$3.$(MySubVersionRevision)" />
</Target>
EDIT --------------------------------------- -----------
Ở trên có thể bắt đầu thất bại sau khi số sửa đổi SVN của bạn đạt 65534 hoặc cao hơn.
Xem:
Turn off warning CS1607
Dưới đây là cách giải quyết.
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="AssemblyFileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="AssemblyFileVersion("$1.$2.$3.$(SubVersionRevision)" />
Kết quả của việc này sẽ là:
Trong Windows/Explorer // File/Thuộc tính .......
Phiên bản hội sẽ là 1.0.0.0.
Phiên bản tệp sẽ là 1.0.0.333 nếu 333 là bản sửa đổi SVN.
+1 Tuyệt vời, điều này đã giúp tôi rất nhiều. Tôi đã cập nhật phiên bản của bạn cho NAnt để cũng cập nhật AssemblyFileVersion và một số thứ nhỏ nhặt. Nó được bao gồm như là một câu trả lời ở đây trong chủ đề này. Cảm ơn! – galaktor
Những người khác không nên giảm giá mà báo trước; rất quan trọng. Kết quả là, có rất nhiều câu trả lời trên web nói rằng điều này không hoạt động. Vẫn còn có vẻ lỗi, nhưng kích hoạt mà xây dựng trên một kiểm tra trong một lần và tất cả mọi thứ hoạt động như mong đợi ở đó sau. - Cảm ơn một bó – Chuck
Liên kết tới phiên bản Assembly Labeller bị hỏng. – stephen