【问题标题】:How to set AssemblyInfo.cs based on the tfs project build number?如何根据 tfs 项目内部版本号设置 AssemblyInfo.cs?
【发布时间】:2014-07-20 10:48:03
【问题描述】:

该项目托管在 tfs 服务器上,我需要访问构建号,我认为该构建号是在您构建项目时自动生成的。

我需要检索该版本号并将其显示在网页上,以便 QA 和测试人员准确了解他们正在处理的版本。

我在以下链接中找到了如何创建自定义版本号: http://msdn.microsoft.com/en-us/library/aa395241(v=vs.100).aspx

但这并不能解决我的问题,因为我无权访问构建定义文件。

我正在寻找某种可以访问内部版本号或可能生成内部版本号并可能将其写入文件的部署后任务,我可以从中读取它。我不知道这是否有意义,因为这是我第一次在 .Net 上工作

【问题讨论】:

  • 您需要根据内部版本号在AssemblyInfo.cs中设置程序集文件版本
  • 嗨,John,我尝试设置“[assembly: AssemblyVersion("1.0.*")] 和 [assembly: AssemblyFileVersion("1.0.*")]” 但它仍然没有自动更新我的内部版本号,所以我厌倦了使用“[assembly: System.Reflection.AssemblyVersionAttribute("1.0.*")]” 它确实在第一次构建时将其更改为新值,但之后无论有多少它都会吐出相同的值我建造它的时候。你觉得我哪里错了?
  • 嗨 John 没关系,我已经开始工作了,再次感谢您的帮助。
  • 您应该添加一个答案,说明您是如何使用它的。

标签: c# asp.net tfs visual-studio-2013 tfsbuild


【解决方案1】:

你可以这样做:

Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

或者,如果您有多个程序集,则可以使用

Assembly.GetAssembly(typeof(SomeObject))

SomeObject 在您要获取其版本的程序集中声明的位置。

【讨论】:

  • 您好 mclaassen 感谢您分享您的知识,该方法似乎有效,但我无法让我的项目为每个构建吐出一个新的版本值/编号,因为我正在向 John 解释我尝试设置"[assembly: AssemblyVersion("1.0.*")] 和 [assembly: AssemblyFileVersion("1.0.*")] " 但它仍然没有自动更新我的内部版本号,所以我厌倦了使用 "[assembly: System.Reflection .AssemblyVersionAttribute("1.0.*")]" 它确实在第一次构建时将其更改为新值,但之后无论我构建多少次它都会吐出相同的值。你觉得我哪里错了?
  • @AhokRudraraju 嗯不确定,我以前使用过 * 方法,它对我有用。也许尝试进行重建,看看是否会增加它?
【解决方案2】:

这就是我最终实现它的方式,感谢 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;
}

所以当我调用这个方法时,它会给我一个字符串,它只是我的版本号。

【讨论】:

    【解决方案3】:

    TFS Versioning 是一个很好的扩展!

    【讨论】:

      【解决方案4】:

      您最好使用 TFS 社区构建工具中的 TFS 版本活动。该工具会自动从构建名称中获取版本号,并且可以轻松配置为在获取之后和编译之前更新 AssemblyInfo.* 文件。

      在所有工具中,这是最受支持的工具。我发现其他任何一个都过于复杂。我已经在数百个版本中为许多客户使用了它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-04
        • 2010-12-04
        • 2016-03-25
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 2017-02-15
        • 1970-01-01
        相关资源
        最近更新 更多