从AssemblyInfo.cs文件中读取版本号

Mar*_*kus 11 c# c#-4.0

我正在尝试从AssemblyInfo.cs文件中提取版本号!而我正在尝试使用System.Reflection.Assembly.LoadFile(path);但是在执行此操作时,我得到了BadImageFormatException; "该模块应该包含一个程序集清单.(HRESULT的异常:0x80131018)".所以现在我觉得,这是不是一种可行的方法呢?我应该使用RegEx吗?

我已经阅读了很多例子,GetExecutingAssembly()但我确实希望从其他项目中获取该版本.

澄清:我想阅读AssemblyInfo.cs文件中的版本信息!而不是来自编译的文件.在我发布新版本之前,我正在尝试创建一个工具来更新我的版本号.

Nir*_*ngh 8

可以获得汇编版本而不加载它:

using System.Reflection;
using System.IO;

...

// Get assembly 
AssemblyName currentAssembly = AssemblyName.GetAssemblyName(path);
Version assemblyVersion = currentAssembly.Version;
Run Code Online (Sandbox Code Playgroud)

编辑:如果你想读取文件,那么你可以这样做:

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(Regex.Replace(version, @"\P{S}", string.Empty));
                    Console.WriteLine(version);
                }

            }
Run Code Online (Sandbox Code Playgroud)

//输出

1.0.*
1.0.0.0
Run Code Online (Sandbox Code Playgroud)

希望这有帮助......


ABH*_*ABH 5

您可以在AssemblyName.GetAssemblyName中指定目标程序集路径

AssemblyName.GetAssemblyName("ProjectB.exe").Version
Run Code Online (Sandbox Code Playgroud)