我只是想知道如何使用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)
要获得版本号,请尝试
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Reflection.AssemblyName assemblyName = assembly.GetName();
Version version = assemblyName.Version;
要设置版本号,请创建/编辑AssemblyInfo.cs
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
另外,作为旁注,第三个数字是自2000年2月1日以来的天数,第四个数字是当天总秒数的一半。所以如果你在午夜编译,它应该是0。
打开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尝试了这一点,但它不起作用。
在较新的VS版本中,至少确定性标志阻止了自动更新。但是改变了第14行
您的项目名。csproj到<Deterministic>false</Deterministic> . csproj到<Deterministic>false</Deterministic> . csproj到
并将版本号字符串更改为“1.0”。*”并没有帮到我。
所以我做了一个小vbs脚本来完成这项工作。
它将版本号更改为(主要版本)。(小版本)。[一][dayofyear])。(增量)。
将脚本复制到一个文件夹中,并将以下内容放入pre-compile build-commandline:
"Path-to-this-script\UpdateVersion.vbs" "$(ProjectDir)"
(包括报价和填写您机器的真实路径)
和你完成了。
在这里获取:
https://github.com/abtzero/VS_UpdateVersion.git
在每次构建中更改版本号的另一个选项是使用MSBuild.Community.Tasks的version任务。只需下载他们的安装程序,安装它,然后调整以下代码,并将其粘贴到<Import Project="$(MSBuildBinPath)\Microsoft.CSharp。在你的。csproj文件中的Targets " />:
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<Target Name="BeforeBuild">
<Version VersionFile="Properties\version.txt" Major="1" Minor="0" BuildType="Automatic" StartDate="12/31/2009" RevisionType="BuildIncrement">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>
<AssemblyInfo CodeLanguage="CS"
OutputFile="Properties\VersionInfo.cs"
AssemblyVersion="$(Major).$(Minor)"
AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />
</Target>
注意:根据您的语言环境调整StartDate属性。它目前不使用不变区域性。
对于2010年1月14日的第三个版本,这将创建一个包含以下内容的VersionInfo.cs:
[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.14.2")]
然后必须将该文件添加到项目中(通过添加现有项),并且必须从AssemblyInfo.cs中删除AssemblyVersion和AssemblyFileVersion行。
用于更改版本组件的不同算法在$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks中描述。chm和版本属性。
Cake支持对AssemblyInfo文件进行补丁。有了蛋糕在手,你有无限的方法来实现自动版本增量。
像c#编译器一样增加版本的简单例子:
Setup(() =>
{
// Executed BEFORE the first task.
var datetimeNow = DateTime.Now;
var daysPart = (datetimeNow - new DateTime(2000, 1, 1)).Days;
var secondsPart = (long)datetimeNow.TimeOfDay.TotalSeconds/2;
var assemblyInfo = new AssemblyInfoSettings
{
Version = "3.0.0.0",
FileVersion = string.Format("3.0.{0}.{1}", daysPart, secondsPart)
};
CreateAssemblyInfo("MyProject/Properties/AssemblyInfo.cs", assemblyInfo);
});
在这里:
Version -是汇编版本。最佳实践是锁定主要版本号并保留零(如“1.0.0.0”)。
FileVersion -是程序集文件版本。
请注意,您不仅可以修补版本,还可以修补所有其他必要的信息。