我只是想知道如何使用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)
对于任何使用Tortoise Subversion的人,您可以将您的版本号之一绑定到源代码的Subversion修订号。我发现这非常有用(审计人员也非常喜欢!)。您可以通过在预构建中调用WCREV实用程序并从模板生成AssemblyInfo.cs来实现这一点。
如果您的模板名为AssemblyInfo。wcrev位于正常的AssemblyInfo.cs目录中,而tortoise位于默认安装目录中,那么你的预构建命令看起来像这样(注意,都在一行中):
"C:\Program Files\TortoiseSVN\bin\SubWCRev.exe" "$(ProjectDir)." "$(ProjectDir)Properties\AssemblyInfo.wcrev" "$(ProjectDir)Properties\AssemblyInfo.cs"
模板文件将包含wcrev令牌替换字符串:$ wcrev $
如。
[assembly: AssemblyFileVersion("1.0.0.$WCREV$")]
注意:
由于现在生成了AssemblyInfo.cs,您不希望对其进行版本控制。
如何获取版本{major}.{year}.1{date}.1{time}
这个有点实验性,但我喜欢。灵感来自Jeff Atwood @ CodingHorror(链接)。
结果的版本号变成1.2016.10709.11641(意思是2016-07-09 16:41),这允许
可怜的男人零填充(愚蠢的前导1)
嵌入到版本号中的近乎人类可读的本地DateTime
对于真正重大的突破性更改,不要使用Major版本。
在项目中添加一个新项,选择General -> Text Template,将其命名为CustomVersionNumber,并(如果适用)在Properties/AssemblyInfo.cs中注释出AssemblyVersion和AssemblyFileVersion。
然后,在保存该文件或构建项目时,这将重新生成一个.cs文件,该文件位于已创建的.tt文件下的子项。
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
//
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
//
using System.Reflection;
<#
var date = DateTime.Now;
int major = 1;
int minor = date.Year;
int build = 10000 + int.Parse(date.ToString("MMdd"));
int revision = 10000 + int.Parse(date.ToString("HHmm"));
#>
[assembly: AssemblyVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]
[assembly: AssemblyFileVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]