DLL版本信息 (DllVersionHelper)
DllVersionHelper 提供DLL库的版本信息和元数据查询,用于诊断、日志记录和兼容性检查。
通过 DllVersionHelper 静态类访问。
版本信息属性
Info
public static DllVersionInfo Info { get; }
获取完整的DLL版本信息结构。
返回值:
DllVersionInfo— 包含版本号、构建日期、校验和等完整信息
相关结构:
public struct DllVersionInfo
{
public ushort Major; // 主版本号
public ushort Minor; // 次版本号
public ushort Patch; // 修订号
public ushort Build; // 构建号
public string BuildDate; // 构建日期
}
示例:
var info = DllVersionHelper.Info;
Console.WriteLine($"DLL版本: {info.Major}.{info.Minor}.{info.Patch}.{info.Build}");
Console.WriteLine($"构建日期: {info.BuildDate}");
VersionNumber
public static string VersionNumber { get; }
获取DLL版本号字符串,格式为 X.X.X.X(Major.Minor.Patch.Build)。
返回值:
string— 版本号(例如:2.5.2.0)
示例:
string version = DllVersionHelper.VersionNumber;
Console.WriteLine($"当前DLL版本: {version}");
// 版本兼容性检查
if (version.StartsWith("2.5"))
{
Console.WriteLine("使用 v2.5 系列");
}
BuildDate
public static string BuildDate { get; }
获取DLL编译日期。
返回值:
string— 构建日期(ISO 8601格式)
示例:
string buildDate = DllVersionHelper.BuildDate;
Console.WriteLine($"DLL构建于: {buildDate}");
Checksum
public static string Checksum { get; }
获取DLL的唯一识别码。
返回值:
string— 识别码(5个字符)
示例:
string checksum = DllVersionHelper.Checksum;
Console.WriteLine($"DLL校验和: {checksum}");
// 用于唯一标识DLL版本
string uniqueId = $"{DllVersionHelper.VersionNumber}-{checksum}";
完整示例
应用程序日志
在日志中记录DLL版本信息:
using DarraEtherCAT_Master;
class Program
{
static void Main()
{
// 启动时记录版本信息
Console.WriteLine("=== Darra EtherCAT Master ===");
Console.WriteLine($"DLL版本: {DllVersionHelper.VersionNumber}");
Console.WriteLine($"构建日期: {DllVersionHelper.BuildDate}");
Console.WriteLine($"校验和: {DllVersionHelper.Checksum}");
Console.WriteLine("============================");
// 业务逻辑...
}
}
版本兼容性检查
确保应用程序与DLL版本兼容:
public class VersionChecker
{
public static bool CheckCompatibility()
{
var version = DllVersionHelper.VersionNumber;
var major = int.Parse(version.Split('.')[0]);
var minor = int.Parse(version.Split('.')[1]);
// 要求 v2.5 或更高版本
if (major < 2 || (major == 2 && minor < 5))
{
Console.WriteLine($"错误:DLL版本过低({version}),需要 v2.5+");
return false;
}
Console.WriteLine($"DLL版本兼容: {version}");
return true;
}
}
诊断信息收集
生成诊断报告:
public class DiagnosticsReporter
{
public static string GenerateReport()
{
var sb = new StringBuilder();
sb.AppendLine("=== 系统诊断报告 ===");
sb.AppendLine();
// DLL版本信息
sb.AppendLine("DLL信息:");
sb.AppendLine($" 版本: {DllVersionHelper.VersionNumber}");
sb.AppendLine($" 构建: {DllVersionHelper.BuildDate}");
sb.AppendLine($" 校验和: {DllVersionHelper.Checksum}");
sb.AppendLine();
// 系统信息
sb.AppendLine($" 操作系统: {Environment.OSVersion}");
sb.AppendLine($" .NET版本: {Environment.Version}");
return sb.ToString();
}
}
唯一标识符生成
为日志文件或会话生成唯一标识符:
public class SessionManager
{
public static string CreateSessionId()
{
string versionId = DllVersionHelper.Checksum;
string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
return $"SESSION_{versionId}_{timestamp}";
}
}
应用启动检查
using System;
using DarraEtherCAT_Master;
class Program
{
static void Main()
{
try
{
// 显示版本信息
PrintVersionInfo();
// 兼容性检查
if (!CheckMinimumVersion(2, 5))
{
Console.WriteLine("程序需要 DLL v2.5 或更高版本");
return;
}
// 启动主站
var master = new DarraEtherCAT();
// ...
}
catch (Exception ex)
{
LogError(ex);
}
}
static void PrintVersionInfo()
{
Console.WriteLine("╔══════════════════════════════════╗");
Console.WriteLine("║ Darra EtherCAT Master ║");
Console.WriteLine("╠══════════════════════════════════╣");
Console.WriteLine($"║ 版本: {DllVersionHelper.VersionNumber,-20} ║");
Console.WriteLine($"║ 构建: {DllVersionHelper.BuildDate,-20} ║");
Console.WriteLine($"║ 校验: {DllVersionHelper.Checksum,-20} ║");
Console.WriteLine("╚══════════════════════════════════╝");
}
static bool CheckMinimumVersion(int minMajor, int minMinor)
{
var parts = DllVersionHelper.VersionNumber.Split('.');
int major = int.Parse(parts[0]);
int minor = int.Parse(parts[1]);
return (major > minMajor) ||
(major == minMajor && minor >= minMinor);
}
static void LogError(Exception ex)
{
var logFile = $"error_{DllVersionHelper.Checksum}_{DateTime.Now:yyyyMMdd}.log";
File.AppendAllText(logFile,
$"[{DateTime.Now}] DLL v{DllVersionHelper.VersionNumber}\n" +
$"{ex}\n\n");
}
}
注意事项
版本管理
在生产环境中,建议记录DLL版本信息到应用程序日志,便于问题追溯和版本管理。
校验和用途
Checksum 是 DLL 版本唯一标识码,主要用于快速区分不同构建版本,不应用于安全验证。