C# 从AssemblyInfo.cs获取程序集版本

C# 从AssemblyInfo.cs获取程序集版本,c#,asp.net-mvc,assemblyinfo,C#,Asp.net Mvc,Assemblyinfo,我们的Web应用程序中有一个AssemblyInfo.cs文件,但我们在同一解决方案中还有其他项目。它们大多是类库。我被告知在UI上显示来自AssemblyInfo.cs的程序集版本。我从SO中找到了以下解决方案 或 但这让我有点困惑。它说的是getExecutionGassembly(),如果它在其他类库的另一个程序集上运行呢?这些代码是否会一直从驻留在Web项目中的AssemblyInfo.cs文件中获取?(这就是我想要的)如文档所述,Assembly.getExecutionGassemb

我们的Web应用程序中有一个
AssemblyInfo.cs
文件,但我们在同一解决方案中还有其他项目。它们大多是类库。我被告知在UI上显示来自
AssemblyInfo.cs
的程序集版本。我从SO中找到了以下解决方案


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

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


如果您想更明确(更快),可以编写
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

这个问题涉及到获取任何程序集的版本。谢谢,但我不需要任何程序集,而是我想要从
AssemblyInfo.cs
获取,我想确保它来自那里。然后,您能告诉我如何始终从Web应用程序的
AssemblyInfo.cs
获取程序集版本信息吗?我只是想确保我需要的字段来自那里。@Tarik:使用该项目中的任何类型。这个答案让我找到了以下(VB)代码:
新的ApplicationServices.AssemblyInfo(Reflection.Assembly.GetExecutionGassembly())
非常简单。谢谢typeof(SomeType)。Assembly@SLaks-你带我去的,我给了你一票。然而,答案可以用更好的措辞,将其提供给观众,而不必做额外的工作来找到答案。对我来说,答案是:System.Reflection.Assembly theAssembly=System.Reflection.Assembly.GetExecutionGassembly();//实际版本值为:var AssemblyVersion=System.Reflection.Assembly.GetExecutionGassembly().GetName().Version.ToString();这是从源文件获取的版本,是的-但是当程序在客户的计算机上运行时,源代码文件将不可用。没有人让你指向源文件。您可以引用dll或html页面。
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