【问题标题】:Getting Assembly Version from AssemblyInfo.cs从 AssemblyInfo.cs 获取程序集版本
【发布时间】:2013-02-28 01:53:31
【问题描述】:

我们的 Web 应用程序中有一个 AssemblyInfo.cs 文件,但我们在同一解决方案中确实有其他项目。它们主要是类库。我被告知在我们的 UI 上显示来自 AssemblyInfo.cs 的 Assembly Version。我从C# AssemblyFileVersion usage within a program

在 SO 中找到了以下解决方案
using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;

using System.Reflection;
using System.IO;

FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo
                               (Assembly.GetExecutingAssembly().Location);

Console.WriteLine("AssemblyVersion : {0}", 
         Assembly.GetExecutingAssembly().GetName().Version.ToString());

Console.WriteLine ("AssemblyFileVersion : {0}" , 
         fv.FileVersion.ToString ());

但这让我有点困惑。它说GetExecutingAssembly(),如果它在其他类库的另一个程序集上运行怎么办?这些代码会一直从驻留在 Web 项目中的AssemblyInfo.cs 文件中获取吗? (这是我想要的)

【问题讨论】:

  • stackoverflow.com/questions/2724546/… 这个问题讨论的是任何程序集的获取版本。
  • 谢谢,但我不需要任何程序集,而是我想要来自 AssemblyInfo.cs 的组件,我想确保它来自那里。

标签: c# asp.net-mvc assemblyinfo


【解决方案1】:

如文档所述,Assembly.GetExecutingAssembly() 获取调用代码在其中编译的程序集。

如果您想更明确(更快),可以写typeof(SomeType).Assembly,其中SomeType 是您要查找的项目中的任何类型。

【讨论】:

  • 那你能告诉我如何一直从Web应用程序的AssemblyInfo.cs获取程序集版本信息吗?我只是想确保我需要的字段来自那里。
  • @Tarik:使用该项目中的任何类型。
  • 这个答案让我得到了以下(VB)代码:New ApplicationServices.AssemblyInfo(Reflection.Assembly.GetExecutingAssembly())
  • 非常简单。谢谢。 typeof(SomeType).Assembly
  • @SLaks - 你把我带到了那里,我给了你赞成票。然而,答案可以更好地表达给观众,而无需做额外的工作来找到答案。对我来说,答案是:System.Reflection.Assembly theAssembly = System.Reflection.Assembly.GetExecutingAssembly(); // 实际版本值为: var AssemblyVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
【解决方案2】:

如果你想读取文件,那么你可以这样做。

string path = @"d:\AssemblyInfo.cs";
        if (File.Exists(path))
        {
            // Open the file to read from.
            string[] readText = File.ReadAllLines(path);
            var versionInfoLines = readText.Where(t => t.Contains("[assembly: AssemblyVersion"));
            foreach (string item in versionInfoLines)
            {
                string version = item.Substring(item.IndexOf('(') + 2, item.LastIndexOf(')') - item.IndexOf('(') - 3);          
                Console.WriteLine(version);
            }

        }

输出

1.0.0.0

【讨论】:

  • 这会从源文件中获取版本,是的 - 但是当程序在客户的计算机上运行时,源代码文件将不可用。
  • 没有人让你指向源文件。您可以引用 dll 或 html 页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2018-04-27
相关资源
最近更新 更多