c# - 如何在 Visual Studio 2022 中使用日期/时间更改 AssemblyInfo.cs AssemblyVersion 并每天将修订增加一

标签 c# .net datetime .net-assembly versioning

经过挖掘和搜索。我发现 AssemblyVersion 只接受 System.Int16 这意味着它不能超过 65,535 的值。

我需要的输出*.DLL 程序集版本样式(YYYY.M.D.HHMMSS)(2022.02.20.060920)

实际上第二部分第一个零会省略 060920 它将是 60920,如果小时是 15 = 3 PM,它应该是 150920 = 6 位数。不起作用。我想有一种方法 DateTime.Now.Ticks 但它给出了一个 System.Int64 并且永远不会适用于 Version

请问有没有 5 位 小时/分钟/秒 样式可以在这里使用?或者可能是有意义的特殊 5 位刻度。

当我使用 Visual Studio 自动增量修订版 1.0.0.* 功能时的主要问题。它给出任意增量值。并且包输出没有排序。

DLLs

我现在该怎么办?现在我需要使用 Time for revision 字段...你能帮忙吗?

编辑, 如果上述 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在没有更新到 Visual Studio 2022 或者他们可能不支持它的 VS 市场中,我尝试在下面给出解决方案:

(如果您有更好的方法,请随时修改答案)

最佳答案

我希望他们更新 extension在 VS 市场中。

但无论如何,这里的解决方案是生成带有(年、月、日、增量每日)的版本

此代码必须在 </project> 结束之前插入标记 *.csproj文件

<!-- 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>Properties\AssemblyInfo.cs</AssemblyInfo>
        <AssemblyInfoContent>$([System.IO.File]::ReadAllText($(AssemblyInfo)))</AssemblyInfoContent>
        <VersionRegex>(\[\s*assembly\s*:\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. 图书馆/项目的每一天都将从(年、月、日、日增量)开始

Incremental daily

  1. 次日从一开始递增: Next Day increment from one again

关于c# - 如何在 Visual Studio 2022 中使用日期/时间更改 AssemblyInfo.cs AssemblyVersion 并每天将修订增加一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71191341/

相关文章:

c# - 如何在Windows phone 8 中通过Assembly.Load 动态加载程序集?

mysql - 如何取时间列的平均值并将输出显示为时间

javascript - ListBoxFor为每个选项元素添加数据属性

.net - PowerShell表单关闭输出 “Cancel”

c# - 在转换为 int 之前将空字段转换为零?

c# - 在 .net 中的嵌套循环内执行异步方法时出现问题

datetime - 如何在 Yahoo Pipes 中获取当前日期和时间?

Python pandas 在尝试访问大型数据集上的 'DATE' 列时产生错误

c#:分部分保存 JPG

java - 如何连接带有RS323C接口(interface)的PC?