我甚至不确定版本控制是否适合它,但它必须这样做。我想根据用户的要求开始在我们的内部应用程序上添加“版本x.x.xx”注释,因此他们大致了解何时更新(以及将来创建一个显示更改的链接)。看起来使用AssemblyInfo.cs文件是一个好主意 - 它可以让你自动更新构建+修订版本(对于Web应用程序的.DLL而言)。
这是一个不错的方法吗?然后每当我达到我的应用程序的主要/次要版本里程碑时。我可以手动更新这些,对吗?所有这些假设我实际上可以从我的应用程序获取版本信息。不知怎的,我不知道怎么做。
答案 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文件中指定的版本。