我们的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
文件中获取? (这就是我想要的)
答案 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