31

我们的 Web 应用程序中有一个AssemblyInfo.cs文件,但我们在同一个解决方案中确实有其他项目。它们主要是类库。我被告知AssemblyInfo.cs在我们的 UI 上显示 Assembly Version。我从程序中的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 项目中的文件中获取吗?(这就是我想要的)

4

2 回答 2

32

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

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

于 2013-02-28T01:57:21.827 回答
-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
于 2018-02-07T14:53:34.023 回答