从AssemblyInfo.cs获取程序集版本

时间:2013-02-28 01:53:32

标签: c# asp.net-mvc assemblyinfo

我们的Web应用程序中有一个AssemblyInfo.cs文件,但我们在同一个解决方案中有其他项目。他们大多是类库。我被告知要在我们的UI上显示来自AssemblyInfo.cs的汇编版本。我在C# AssemblyFileVersion usage within a program

中找到了以下解决方案
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文件中获取? (这就是我想要的)

2 个答案:

答案 0 :(得分:27)

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

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

答案 1 :(得分:-4)

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

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