我只是想知道如何使用Visual Studio(2005)自动增加文件的构建(和版本?)

如果我查找C:\Windows\notepad.exe的属性,版本选项卡给出“文件版本:5.1.2600.2180”。我想在我的dll的版本中也得到这些很酷的数字,而不是版本1.0.0.0,让我们面对它有点沉闷。

我尝试了一些东西,但它似乎没有开箱即用的功能,或者可能我只是在错误的地方(像往常一样)。

我主要工作与网络项目....

我看了两个:

http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx http://www.codeproject.com/KB/dotnet/build_versioning.aspx

我不敢相信花这么大力气做一件事是标准做法。

编辑: 据我所知,它在VS2005中不工作(http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx)


当前回答

转到项目|属性,然后是程序集信息,然后是程序集版本,在最后一个或倒数第二个框中放入*(不能自动增加主要或次要组件)。

其他回答

转到项目|属性,然后是程序集信息,然后是程序集版本,在最后一个或倒数第二个框中放入*(不能自动增加主要或次要组件)。

在VS2012中可以更改AssemblyInfo。奇怪的是,Visual Studio中对此没有更多的支持,你会认为这是构建/发布过程的基本部分。

也许现在回答这个问题已经太迟了,但希望这能解决一些人忙碌的问题。

使用PowerShell脚本自动更改所有项目的汇编版本的方法。本文将解决您的许多问题。

打开AssemblyInfo.cs文件并更改

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

to

[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

你可以在IDE中通过项目->属性->程序集信息来做到这一点

但是,这将只允许您自动增加程序集版本,并将为您提供

程序集文件版本:该字段不允许使用通配符(“*”)

消息框,如果您尝试在文件版本字段中放置*。

因此,只需打开assemblyinfo.cs并手动执行。

在Visual Studio 2019中

这对我来说还不够

[assembly: AssemblyVersion("1.0.*")]

在构建时,它抛出这个错误

指定的版本字符串不符合所需的格式

解决方案

在project.csproj中将Deterministic设置为False后,格式最终被接受

<Deterministic>false</Deterministic>

编辑:

出于某种原因,将Deterministic设置为False会使我的配置文件加载并保存在不同的位置。

处理:

我设置了一个构建后事件来增加版本号:

生成后事件批处理脚本

这将调用一个名为autoincrement_version的powershell脚本。ps1将AssemblyInfo.cs的路径作为参数传递

if $(ConfigurationName) == Release (
PowerShell -ExecutionPolicy RemoteSigned $(ProjectDir)autoincrement_version.ps1 '$(ProjectDir)My Project\AssemblyInfo.cs'
)

Poweshell 脚本

它使用Regex自动增加修订号

param( [string]$file );
  $regex_revision = '(?<=Version\("(?:\d+\.)+)(\d+)(?="\))'
  $found = (Get-Content $file) | Select-String -Pattern $regex_revision
  $revision = $found.matches[0].value
  $new_revision = [int]$revision + 1
  (Get-Content $file) -replace $regex_revision, $new_revision | Set-Content $file -Encoding UTF8