C# AssemblyVersion中未反映内部版本号增量

C# AssemblyVersion中未反映内部版本号增量,c#,build-process,assemblies,C#,Build Process,Assemblies,我浏览了一些关于自动递增构建数量的讨论,但在年轻人的不耐烦中,我决定自己滚动并重新发明轮子。我知道可能有更好的方法来实现这一点(我肯定会进行调查),但我的问题更多地集中在程序集和/或版本类上 我的方法是编写一个单独的exe(BuildIncrementer),该exe接受一个命令行参数作为文件名,对内容进行正则表达式匹配以获取[assembly:AssemblyVersion…]字符串,进行我想要的修改(增加版本号等),然后将内容写回文件。这种方法按原样工作 接下来我要做的是在我想使用它的项目中

我浏览了一些关于自动递增构建数量的讨论,但在年轻人的不耐烦中,我决定自己滚动并重新发明轮子。我知道可能有更好的方法来实现这一点(我肯定会进行调查),但我的问题更多地集中在程序集和/或版本类上

我的方法是编写一个单独的exe(BuildIncrementer),该exe接受一个命令行参数作为文件名,对内容进行正则表达式匹配以获取
[assembly:AssemblyVersion…]
字符串,进行我想要的修改(增加版本号等),然后将内容写回文件。这种方法按原样工作

接下来我要做的是在我想使用它的项目中,我设置了一个预构建命令行,它只是在这个项目的AssemblyInfo.cs文件上执行BuildIncrementer.exe的命令。这也可以根据需要更新部件信息

问题出现在我运行项目时,它会发送一封包含当前版本的电子邮件,该版本是通过
Assembly.GetExecutingAssembly().GetName().version.ToString()
获得的。但是,显示的版本是以前的版本。当我的AssemblyInfo.cs显示
[assembly:AssemblyVersion(“1.0.2.49667”)]
时,我收到了上一个版本的1.0.1.45660


有人知道为什么会这样吗?

我认为您的exe在整个构建过程完成(或开始)之前运行,因此反映了一个旧版本…如果您知道有更好的方法,可能会这样做,除非这是一个学术练习,为什么不放弃BuildIncrementer,使用VisualStudio的内置功能呢?否则,您的流程听起来应该是可行的。我假设汇编代码报告的版本与AssemblyInfo.cs文件相比始终是以前的版本,并且它不仅仅是一个被冻结的版本号。是的,这是一个学术练习。只是玩弄一个DIY解决方案。是的,报告的版本始终是以前的版本,而不是冻结的版本号。我想知道这是否与项目建设的顺序有关?例如,即使在预生成命令运行之前,程序集信息是否可以放入exe?即使我生成项目,仔细检查程序集信息文件(并查看更新版本),然后启动exe,也会发生这种情况。你是说可能exe是在预构建完成之前构建的吗?这难道不符合预构建命令的目的吗?