C# 如何基于tfs项目内部版本号设置AssemblyInfo.cs?
该项目托管在tfs服务器上,我需要访问构建编号,我假设该编号在构建项目时自动生成 我需要检索该版本号并将其显示在网页上,以便QA和测试人员准确地知道他们正在使用哪个版本 我在以下链接中找到了如何创建自定义内部版本号: 但它并没有解决我的问题,因为我没有访问构建定义文件的权限C# 如何基于tfs项目内部版本号设置AssemblyInfo.cs?,c#,asp.net,tfs,visual-studio-2013,tfsbuild,C#,Asp.net,Tfs,Visual Studio 2013,Tfsbuild,该项目托管在tfs服务器上,我需要访问构建编号,我假设该编号在构建项目时自动生成 我需要检索该版本号并将其显示在网页上,以便QA和测试人员准确地知道他们正在使用哪个版本 我在以下链接中找到了如何创建自定义内部版本号: 但它并没有解决我的问题,因为我没有访问构建定义文件的权限 我正在寻找某种类型的部署后任务,它可以访问构建编号,也可以生成一个构建编号,并可能将其写入一个文件,从中我可以读取它。我不知道这是否有意义,因为这是我第一次在.Net上工作您可以这样做: Assembly assembly
我正在寻找某种类型的部署后任务,它可以访问构建编号,也可以生成一个构建编号,并可能将其写入一个文件,从中我可以读取它。我不知道这是否有意义,因为这是我第一次在.Net上工作您可以这样做:
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
或者,如果有多个程序集,则可以使用
Assembly.GetAssembly(typeof(SomeObject))
其中,
SomeObject
在要获取其版本的程序集中声明。您可以执行以下操作:
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
或者,如果有多个程序集,则可以使用
Assembly.GetAssembly(typeof(SomeObject))
其中,
SomeObject
在要获取其版本的程序集中声明。是一个很好的扩展 是一个很好的扩展 多亏了约翰和麦克拉森,我终于实现了它
在我的AssemblyInfo.cs中,我做了以下更改:
之前:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
之后:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
然后,我编写了一个助手类,它可以使用get方法访问AssemblyVersion号
public string GetVersion()
{
string version ;
version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
return version;
}
因此,每当我调用这个方法时,它都会给我一个字符串,它只不过是我的版本号。这就是我最终实现它的原因,多亏了John和mclaassen 在我的AssemblyInfo.cs中,我做了以下更改: 之前:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
之后:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
然后,我编写了一个助手类,它可以使用get方法访问AssemblyVersion号
public string GetVersion()
{
string version ;
version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
return version;
}
因此,每当我调用此方法时,它都会给我一个字符串,它只不过是我的版本号。您最好使用TFS社区构建工具中的TFS版本活动。此工具自动从生成名称中获取版本号,并且可以轻松配置为在get之后和编译之前更新AssemblyInfo.*文件
在所有的工具中,这是最受支持的一个。我觉得其他的都太复杂了。我已经为许多客户在数百个构建中使用了此功能。您最好使用TFS社区构建工具中的TFS版本活动。此工具自动从生成名称中获取版本号,并且可以轻松配置为在get之后和编译之前更新AssemblyInfo.*文件
在所有的工具中,这是最受支持的一个。我觉得其他的都太复杂了。我已经为许多客户在数百个版本中使用了此功能。您需要根据版本号在AssemblyInfo.cs中设置程序集文件版本Hi John,我尝试设置“[assembly:AssemblyVersion(“1.0.*”)]和[assembly:AssemblyFileVersion(“1.0.”)]”但它仍然无法自动更新我的版本号,因此我厌倦了使用”[assembly:System.Reflection.AssemblyVersionAttribute(“1.0.*)”它确实在第一次构建时将其更改为一个新值,但在那之后,无论我构建了多少次,它都会吐出相同的值。你认为我哪里出错了?嗨,John,别介意,我让它工作了,再次感谢你的帮助。你应该添加一个答案,说明你是如何让它工作的。你需要在assembly中设置程序集文件版本Info.cs基于版本号hi John,我尝试设置“[assembly:AssemblyVersion(“1.0.*)”和[assembly:AssemblyFileVersion(“1.0.*)”]”但它仍然没有自动更新我的版本号,所以我厌倦了使用“[assembly:System.Reflection.AssemblyVersionAttribute(“1.0.])”它确实在第一次构建时将其更改为一个新值,但之后无论我构建多少次,它都会吐出相同的值。你认为我错在哪里了?嗨,约翰,别介意,我让它工作了,再次感谢你的帮助。你应该添加一个答案,说明你是如何使它工作的。嗨,麦克拉森,谢谢你分享你的知识,a该方法似乎可行,但我无法让我的项目为每个版本吐出一个新的版本值/编号,正如我向John解释的那样,我尝试设置“[assembly:AssemblyVersion(“1.0.*”)]和[assembly:AssemblyFileVersion(“1.0.*”)]””,但它仍然无法自动更新我的版本号,因此我厌倦了使用”[assembly:System.Reflection.AssemblyVersionAttribute(“1.0.*)”它确实在第一次构建时将其更改为一个新值,但之后无论我构建多少次,它都会吐出相同的值。你认为我哪里出了问题?@ahokrudraju嗯,不确定,我以前使用过*方法,它对我有效。也许可以尝试进行重建,看看是否会增加它?嗨,麦克拉森,谢谢分享你的k要知道,这种方法似乎是可行的,但我无法让我的项目为每个构建吐出一个新的版本值/编号,正如我向John解释的那样,我尝试设置“[assembly:AssemblyVersion(“1.0.*”)]和[assembly:AssemblyFileVersion(“1.0.”)]””,但它仍然无法自动更新我的构建编号,因此我厌倦了使用”[assembly:System.Reflection.AssemblyVersionAttribute(“1.0.*)”它确实在第一次构建时将其更改为一个新值,但在那之后,无论我构建多少次,它都会吐出相同的值。你认为我哪里出了问题?@ahokrudraju嗯,不确定,我以前使用过*方法,它对我有效。也许可以尝试进行重建,看看是否会增加它?