繁体   English   中英

从AssemblyInfo.cs获取程序集版本

[英]Getting Assembly Version from AssemblyInfo.cs

我们的Web应用程序中有一个AssemblyInfo.cs文件,但我们在同一个解决方案中有其他项目。 他们大多是类库。 有人告诉我,从显示器组件版本AssemblyInfo.cs我们的UI。 在程序中的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()以及它在其他类库的另一个程序集上运行会怎么样? 这些代码是否会始终从驻留在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM