我只是想知道如何使用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)


当前回答

我已经创建了一个应用程序来自动增加文件版本。

下载应用程序 将以下行添加到预构建事件命令行 C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ \ AssemblyInfo.cs属性 构建项目

为了简单起见,应用程序只在出现错误时抛出消息,为了确认它工作正常,你需要在“装配信息”中检查文件版本

注意:您必须在Visual studio中重新加载“装配信息”按钮来填充字段,但是您的输出文件将具有更新版本。

如有任何建议和要求,请发电子邮件至telson_alva@yahoo.com

其他回答

使用MSBuild Community Tasks (http://msbuildtasks.tigris.org/)项目中的AssemblyInfo任务,并将其集成到.csproj/中。vbproj文件。

它有许多选项,包括将版本号与日期和时间联系起来。

推荐。

我使用这种方法https://stackoverflow.com/a/827209/3975786通过将T4模板放在“解决方案项”中,并在每个项目中使用“作为链接添加”。

打开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并手动执行。

设置版本号为“1.0”。*”,它会自动填充最后两个数字的日期(天从某个点)和时间(半秒从午夜)

如其他文章所述,在AssemblyInfo中的版本号中或在项目属性下设置*并不适用于所有版本的Visual Studio / . net。

Afaik,它在2005年的比赛中不起作用(但在2003年和2008年的比赛中不起作用)。对于VS 2005,你可以使用以下方法:在编译时自动增加Visual Studio 2005版本的构建和修订号。

But be aware that changing the version number automatically is not recommended for strong-named assemblies. The reason is that all references to such an assembly must be updated each time the referenced assembly is rebuilt due to the fact that strong-named assembly references are always a reference to a specific assembly version. Microsoft themselves change the version number of the .NET Framework assemblies only if there are changes in interfaces. (NB: I'm still searching for the link in MSDN where I read that.)