问题描述
经过挖掘和搜索。我发现AssemblyVersion
只接受System.Int16
,这意味着它不能超过65,535值。
我需要的输出*.DLL程序集版本样式(YYYY.M.D.HHMMSS)(2022.02.20.060920)
实际上第二部分的第一个零将省略060920,它将是60920,如果小时是15=3 PM,它应该是150920=6位数字。这是行不通的。我猜有一种方法DateTime.Noow.Ticks,但它提供了System.Int64
,并且永远不适用于版本。
请问这里有什么5位数字的时/分/秒可以使用吗?或者可能是有意义的特殊5位数字记号。
当我使用Visual Studio 1.0.0.*版自动递增功能时,主要的问题是。它可以给出任意增量值。且包输出未排序。
我现在应该做什么?目前,我需要使用修订时间字段...你能帮个忙吗?
编辑,如果上述5位数字样式不可用。我发现文章增加了一次修改。但它非常非常旧,而且使用的是JavaScript!https://www.codeproject.com/Tips/161923/Incrementing-AssemblyVersion-revision-number-on-ea
还有一些问题仍未回答I would like to increment the build revision version for every build in visual studio
我得到了以下代码,其版本为2022.02.20.Revision(从MSDN获取限制为大值午夜*2的版本无效。
编辑:在仅有的extension在VS Marketplace中没有更新到Visual Studio 2022或者他们可能不会支持它期间,我尝试给出以下解决方案:
(如果您有更好的方法,可以随时修改答案)
推荐答案
我希望他们在VS Marketplace中更新extension。
但不管怎样,这里有(年、月、日、增量日)生成版本的解决方案
此代码必须在关闭*.csproj
文件中的</project>
标记之前插入
<!-- Change AssemblyInfo.cs AssemblyVersion with date/time and increment revision daily by one in Visual Studio 2022 -->
<Target Name="AssemblyVersion" BeforeTargets="CoreCompile" DependsOnTargets="PrepareForBuild">
<PropertyGroup>
<!-- Define Constants -->
<AssemblyInfo>PropertiesAssemblyInfo.cs</AssemblyInfo>
<AssemblyInfoContent>$([System.IO.File]::ReadAllText($(AssemblyInfo)))</AssemblyInfoContent>
<VersionRegex>([s*assemblys*:s*AssemblyVersion(s*"(d+).(d+).(d+)(.)(d+)(")s*]))</VersionRegex>
<BuildAndRevisionRegex>(d+.d+")</BuildAndRevisionRegex>
<!-- Parse Build and Revision from AssemblyInfo-->
<AssemblyVersion>$([System.Text.RegularExpressions.Regex]::Match('$(AssemblyInfoContent)', '$(VersionRegex)'))</AssemblyVersion>
<BuildAndRevision>$([System.Text.RegularExpressions.Regex]::Match('$(AssemblyVersion)', '$(BuildAndRevisionRegex)'))</BuildAndRevision>
<BuildAndRevision>$(BuildAndRevision.Remove($(BuildAndRevision.LastIndexOf('"')), 1))</BuildAndRevision>
<!-- Generate Build and Revision from AssemblyVersion -->
<Build>$(BuildAndRevision.SubString(0, $(BuildAndRevision.LastIndexOf('.'))))</Build>
<Revision>$(BuildAndRevision.SubString($([MSBuild]::Add($(BuildAndRevision.LastIndexOf('.')), 1))))</Revision>
<!-- Increment Revision by one if Build equal Current Day otherwise start from one as new Day Build-->
<Revision Condition ="$([System.DateTime]::Now.Day) == $(Build)">$([MSBuild]::Add($(Revision), 1))</Revision>
<Revision Condition ="$([System.DateTime]::Now.Day) != $(Build)">1</Revision>
<!-- New AssemblyVersion Block -->
<AssemblyVersion>[assembly: AssemblyVersion("$([System.DateTime]::Now.ToString("yyyy.M.d.$(Revision)"))")]</AssemblyVersion>
</PropertyGroup>
<!-- Write New AssemblyVersion Block to AssemblyInfo.cs file -->
<WriteLinesToFile File="$(AssemblyInfo)" Lines="$([System.Text.RegularExpressions.Regex]::Replace($(AssemblyInfoContent), $(VersionRegex), $(AssemblyVersion)))" Overwrite="true" />
</Target>
生成的结果如下:
- 每天开始一个库/项目(年、月、日、日递增)
这篇关于如何在VisualStudio2022中使用日期/时间更改AssemblyInfo.cs Assembly Version并每天递增一个版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!