我正在尝试从AssemblyInfo.cs文件中提取版本号!而我正在尝试使用System.Reflection.Assembly.LoadFile(path);但是在执行此操作时,我得到了BadImageFormatException; "该模块应该包含一个程序集清单.(HRESULT的异常:0x80131018)".所以现在我觉得,这是不是一种可行的方法呢?我应该使用RegEx吗?
我已经阅读了很多例子,GetExecutingAssembly()但我确实希望从其他项目中获取该版本.
澄清:我想阅读AssemblyInfo.cs文件中的版本信息!而不是来自编译的文件.在我发布新版本之前,我正在尝试创建一个工具来更新我的版本号.
你可以获得汇编版本而不加载它:
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)
希望这有帮助......
您可以在AssemblyName.GetAssemblyName中指定目标程序集路径
AssemblyName.GetAssemblyName("ProjectB.exe").Version
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11750 次 |
| 最近记录: |