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


当前回答

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

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

其他回答

也许,对于这个任务,你可以使用这样的代码:

    private bool IncreaseFileVersionBuild()
    {
        if (System.Diagnostics.Debugger.IsAttached)
        {
            try
            {
                var fi = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.GetDirectories("Properties")[0].GetFiles("AssemblyInfo.cs")[0];
                var ve = System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
                string ol = ve.FileMajorPart.ToString() + "." + ve.FileMinorPart.ToString() + "." + ve.FileBuildPart.ToString() + "." + ve.FilePrivatePart.ToString();
                string ne = ve.FileMajorPart.ToString() + "." + ve.FileMinorPart.ToString() + "." + (ve.FileBuildPart + 1).ToString() + "." + ve.FilePrivatePart.ToString();
                System.IO.File.WriteAllText(fi.FullName, System.IO.File.ReadAllText(fi.FullName).Replace("[assembly: AssemblyFileVersion(\"" + ol + "\")]", "[assembly: AssemblyFileVersion(\"" + ne + "\")]"));
                return true;
            }
            catch
            {
                return false;
            }
        }
        return false;
    }

从form loading调用它。 使用这段代码,您可以更新AssemblyInfo.cs中的文件信息的任何部分(但必须使用“标准”目录结构)。

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 -是程序集文件版本。

请注意,您不仅可以修补版本,还可以修补所有其他必要的信息。

如其他文章所述,在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.)

AssemblyInfoUtil。免费的。开源的。

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

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

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

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

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