首页 > 其他分享 >VS中设置版本号自动递增

VS中设置版本号自动递增

时间:2024-04-15 14:45:32浏览次数:25  
标签:assembly 版本 版本号 递增 程序 编译 VS 设置

软件版本号主要标识了软件的版本,通过其可以了解软件、类库文件的当前版本,使得软件版本控制有所依据。

我们就Windows系统和.NET Framework的编号规则来看,软件版本号的定义结构一般是这样:主版本号.子版本号.编译版本号.修正版本号

我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为:major.minor.build.revision

Major:具有相同名称但不同主版本号的程序集不可互换。例如,这适用于对产品的大量重写,这些重写使得无法实现向后兼容性。当有极大的更新时,会增加major的版号。

Minor:如果两个程序集的名称和主版本号相同,而次版本号不同,这指示显著增强,但照顾到了向后兼容性。例如,这适用于产品的修正版或完全向后兼容的新版本。而当有大更新,但不至于更新major时,会更新minor的版号。

Build:内部版本号的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。若更新比较小,例如只是除虫(bug fixing),则会更新build的版号。

Revision:名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序 (Hotfix) 更新。当在同一个Build下需要重新编译,那么就需要增加Revision即可。

所以一般的版本信息设置看起来应该是这样:

1
1.1
1.1.*
1.1.1
1.1.1.*
1.1.1.1

 

在设置页面里有一个是程序集版本号,一个是文件版本号。文件版本号主要用来为文件做标识,而程序集版本号用于CLR识别使用。

在我们确定了主版本号和子版本号后,编译版本号和修正版本号就需要在每次编译的时候去变动了,这样在程序测试、排错时才能快速定位到使用的是哪个编译出的版本,而不仅仅是通过文件创建时间去辨别。

在.NET里面提供了一个方法去自动对编译版本号和修正版本号进行设置的方法。

首先我们需要知道通过界面设置的版本信息是存储在项目里的AssemblyInfo.cs文件里的。

默认的设置是这样。

1 [assembly: AssemblyVersion("1.0.0.0")]
2 [assembly: AssemblyFileVersion("1.0.0.0")]

我们需要将主版本号和子版本号填写好,因为这部分是不会频繁变动的,而编译版本使用通配符*代替,并将文件版本信息注释掉,设置起来像这样。

1 [assembly: AssemblyVersion("1.0.*")]
2 //[assembly: AssemblyFileVersion("1.0.0.0")]  //如果需要自动增加版本号,需要注释这句代码,只用上面的一行

这样设置后生成的规则就是:编译版本号是自2000年1月1日以来的天数,而修正版本号会是当天自午夜零点以来的秒数除以2所得的值。

修改侯可能会提示:指定的版本字符串包含通配符,这与确定性不兼容。请删除版本字符串中的通配符,或禁用此编译的确定性

此时用记事本打开该项目的csproj文件,搜索Deterministic,将对应的选项由True改为False,或者直接删除该配置项即可。

    <Deterministic>false</Deterministic>

我们看一个编译后的结果

 

原文出处:https://www.cnblogs.com/mapstar/p/16978616.html

标签:assembly,版本,版本号,递增,程序,编译,VS,设置
From: https://www.cnblogs.com/LinkingCloud/p/18135926

相关文章

  • 函数式编程思想 VS 可变性理论 20240415
    函数式编程(FunctionalProgramming,FP)是一种编程范式,它将计算视为数学函数的求值,并避免使用程序状态以及易变对象。函数式编程的核心思想包括:不可变性(Immutability):在函数式编程中,数据是不变的。一旦创建了一个数据结构,就不能再改变它。所有的操作都会产生新的数据结构。纯......
  • vscode使用ES6装饰器器语法
    1.react项目配置package.json需要安装npmi@babel/plugin-proposal-decorators可能需要重启项目{"babel":{"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}......
  • vscode使用npm安装依赖报错
    1.报错信息npmERR!codeEPERMnpmERR!syscallopennpmERR!pathC:\Node\node_cache_cacache\index-v5\4b\d5\ac02d8eac51f5c368b18a948d14b7ba882d43e6f4cafddbf9dda740d2afanpmERR!errno-4048npmERR!Error:EPERM:operationnotpermitted,open'C:......
  • VSCode设置GDB
    VSCode设置GDB调试工具调试Linux平台应用这里需要注意的我们的在CMake编译可执行程序时,需要加设置DEBUG模式。例如:通过命令行的方式cmake-DCMAKE_BUILD_TYPE=Debug..CMakeLists.txt设置set(CMAKE_BUILD_TYPE"Debug")linux下验证应用程序是否为debug......
  • ovs模糊流表和精确流表
    ovs流表分模糊流表(慢路径)和精确流表(快路径),精确流表数量远少于模糊流表。模糊流表在ovs网桥上,精确流表在ovsdatapath上。精确流表基于模糊流表自动生成和老化。#查看datapath列表ovs-dpctldump-dps#查看datapath基本信息ovs-appctldpctl/showsystem@ovs-system#查看d......
  • vscode使用gdb插件调试二进制文件
    使用vscode访问虚拟机里面的代码。代码是在虚拟机的xshell编译的(必须的debug模式)。现在可以通过在vscode下面安装gdb插件。然后就可以在vscode下面使用gdb来启动这个二进制文件了,还可以在vscode里面,在函数上面打断点。 在vscode左侧栏,点击debug,可以创建launch.json文件。......
  • Vscode配置.md
    Vscode配置1.远程SSH配置1.1本地vscode安装Remote-SSH和RemoteX11插件1.2设置本地vscodeRemote-SSH按如下步骤打开remote-ssh设置加入如下字段比如你的服务器地址是192.168.133.111,用户名是aaaHostsdfasdf#这里可以随便取一个名字HostName192.168.133.111Fo......
  • VSCode使用Go插件
    本文更新于2023-12-26,使用VSCode1.85.1、Go插件v0.40.1。安装Go插件:使用Ctrl+Shift+X打开扩展面板,搜索“Go”,安装“Go”插件(GoforVisualStudioCode)。安装Go插件的依赖工具:因国内无法访问proxy.golang.org,故需自行配置模块代理。运行cmd。在cmd中运行setGOPROXY=h......
  • flutterr 检测应用版本号、服务器下载文件 以及实现 App 自动升级、安装
    依赖package_info_plus:^7.0.0path_provider:^2.1.2#查找文件获取文件存储路径open_file:^3.3.2#打开文件插件permission_handler:^11.3.1#检测Apk是否拥有权限配置权限<!--在Android6(Marshmallow)之前的版本中,明确声明网络权限--><uses-perm......
  • rand VS mt19937
    C++随机数randVsmt19937rand和mt19937介绍众所周知,程序无法模拟出真正的随机数,所以我们所说的随机数都是相对随机的伪随机数。rand是一种常用的随机数,C++初学者一般接触的都是他,但是他有缺点,随机性不高,周期短,质量低。Mt19937用法与rand一样但是他随机性高,周期长,质......