对ASP.NET Web应用程序进行版本控制

时间:2009-09-18 18:22:00

标签: asp.net

我甚至不确定版本控制是否适合它,但它必须这样做。我想根据用户的要求开始在我们的内部应用程序上添加“版本x.x.xx”注释,因此他们大致了解何时更新(以及将来创建一个显示更改的链接)。看起来使用AssemblyInfo.cs文件是一个好主意 - 它可以让你自动更新构建+修订版本(对于Web应用程序的.DLL而言)。

这是一个不错的方法吗?然后每当我达到我的应用程序的主要/次要版本里程碑时。我可以手动更新这些,对吗?所有这些假设我实际上可以从我的应用程序获取版本信息。不知怎的,我不知道怎么做。

5 个答案:

答案 0 :(得分:9)

我们在申请中做同样的事情。虽然您可以手动添加版本号,但我们的版本信息会作为自动构建过程的一部分添加到程序集中(我们使用自定义的TFS 2008服务),我强烈推荐。这是我们使用的控件(我们只是把它放在母版页的底部):

public class BuildVersion : WebControl
{
    /// <summary>
    /// Render override
    /// </summary>
    /// <param name="writer"></param>
    protected override void Render(HtmlTextWriter writer)
    {
        writer.Write("<!--");
        writer.Write("Version: ");
        writer.Write(GetAssemblyVersion());
        writer.Write("-->");
    }

    private string GetAssemblyVersion()
    {
        try
        {
            Object[] atts = Assembly.GetAssembly(this.GetType()).GetCustomAttributes(true);
            foreach (Object o in atts)
            {
                if (o.GetType() == typeof(AssemblyVersionAttribute))
                {
                    return ((AssemblyVersionAttribute)o).Version;
                }
            }
            return String.Empty;
        }
        catch
        {
            return "Failed to load assembly";
        }
    }
}

答案 1 :(得分:2)

您可以按照描述的方式使用版本号,只需在构建新版本时更改AssemblyInfo文件中的数字,但链接到源控制系统时更好。我们使用CrusieControl.NET和Web部署项目来设置版本号,但我相信其他人会有其他建议。

您也可以使用以下代码从已编译的网站获取版本号:

System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString

如果你在编译之前在调试模式下运行它将显示0.0.0.0但你可以检查这个并显示“开发”或其他一些显示给你自己它在本地运行(不是你不会知道但是然后如果你看到0.0.0.0就知道出了什么问题。

希望有所帮助

答案 2 :(得分:1)

我们使用subversion,ccnet和nant自动化版本控制。

我们的脚本解析文件夹路径(/Branches/1.4.5/Source ...)并提取版本号(1.4.5)。之后,我们从subversion中检索当前的版本号,然后将它放在版本的最后位置(即1.4.5.346)。获得完整版本号后,我们将其注入所有程序集并将其写入version.txt文件,以便轻松确定Web服务器上当前部署的版本。

答案 3 :(得分:1)

这不是一个坏主意。获取ASP.NET Web App DLL版本的解决方案很简单:

VB.NET

My.Application.Info.Version(VB.NET)

C#

获取对我的命名空间的访问权限,如http://www.codeproject.com/KB/cs/MyNamespace.aspx

所示

比使用大量代码容易得多。

答案 4 :(得分:0)

给定Assembly a,使用a.GetName()。Version.ToString()来获取代码中的版本。

GetName返回AssemblyName

该版本返回AssemblyInfo文件中指定的版本。