从AssemblyInfo.cs获取程序集版本

本文关键字:程序集 版本 获取 cs AssemblyInfo | 更新日期: 2023-09-27 18:01:24

我们在Web应用程序中有一个AssemblyInfo.cs文件,但我们在相同的解决方案中确实有其他项目。它们大多是类库。我被告知在我们的UI上显示AssemblyInfo.cs的汇编版本。我从c# AssemblyFileVersion在程序中的使用中找到了以下解决方案

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(),如果它是运行在另一个程序集从其他类库?这些代码将从AssemblyInfo.cs文件,居住在Web项目所有的时间取回?(这就是我想要的)

从AssemblyInfo.cs获取程序集版本

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

如果你想更明确(和更快),你可以写typeof(SomeType).Assembly,其中SomeType是你正在寻找的项目中的任何类型。

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

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