tạo ảnh vui nhộn luồng, xây dựng dựa trên công trình của Alex và RobPol, tôi đã có thể để xác định tính chất msbuild mở rộng đó là lấy cảm hứng từ semver.org (Major, Minor, Patch, PreRelease). Tôi đã chọn để phân tích AssemblyInformalVersion vì đó là thuộc tính duy nhất tương thích với SemVer. Dưới đây là ví dụ của tôi:
<PropertyGroup>
<In>$([System.IO.File]::ReadAllText('$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs'))</In>
<Pattern>\[assembly: AssemblyInformationalVersion\("(?<Major>\d+)\.(?<Minor>\d+)\.(?<Patch>[\d]+)(?<PreReleaseInfo>[0-9A-Za-z-.]+)?</Pattern>
<AssemblyVersionMajor>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups["Major"].Value)</AssemblyVersionMajor>
<AssemblyVersionMinor>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups["Minor"].Value)</AssemblyVersionMinor>
<AssemblyVersionPatch>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups["Patch"].Value)</AssemblyVersionPatch>
<AssemblyVersionPreRelease>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups["PreReleaseInfo"].Value)</AssemblyVersionPreRelease>
</PropertyGroup>
Bạn có thể kiểm tra đầu ra của hoạt động này bằng cách thêm dòng sau vào csproj của bạn:
<Target Name="AfterBuild">
<Message Text="$(AssemblyVersionMajor)"></Message>
<Message Text="$(AssemblyVersionMinor)"></Message>
<Message Text="$(AssemblyVersionPatch)"></Message>
<Message Text="$(AssemblyVersionPreRelease)"></Message>
</Target>
Ex: Snippet từ AssemblyInfo.cs của tôi:
[assembly: AssemblyInformationalVersion("0.9.1-beta")]
Sẽ xuất: Chính: '0', Nhỏ: '9', Bản vá: '1', PreRelease: '-beta'
Nguồn
2015-02-06 10:00:12
Không có giải pháp nào khác. ?? mà tôi có thể thực hiện với biểu thức chính quy? hoặc nếu có bất kỳ nhiệm vụ cho nó? –
Vâng tôi đã viết nhiệm vụ của riêng tôi cho nó và tôi đã sử dụng phương pháp chuỗi đơn giản để phân tích cú pháp số phiên bản nhưng tôi chắc chắn bạn có thể làm điều đó với regex quá. Nhưng bạn sẽ phải viết nhiệm vụ của riêng bạn cho điều này anyway, trừ khi bạn tìm thấy một giải pháp out-of-the-box. –
http://blog.tentaclesoftware.com/archive/2009/05/03/38.aspx – Eddie