如何在VisualStudio2022中使用日期/时间更改AssemblyInfo.cs Assembly Version并每天递增一个版本

How to Change AssemblyInfo.cs AssemblyVersion with date/time and increment revision daily by one in Visual Studio 2022(如何在VisualStudio2022中使用日期/时间更改AssemblyInfo.cs Assembly Version并每天递增一个版本)
本文介绍了如何在VisualStudio2022中使用日期/时间更改AssemblyInfo.cs Assembly Version并每天递增一个版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

经过挖掘和搜索。我发现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>

生成的结果如下:

  1. 每天开始一个库/项目(年、月、日、日递增)

  1. 第二天再次从一开始递增:

这篇关于如何在VisualStudio2022中使用日期/时间更改AssemblyInfo.cs Assembly Version并每天递增一个版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)