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.7.2.0)
示例:
string version = DllVersionHelper.VersionNumber;
Console.WriteLine($"当前DLL版本: {version}");
// 版本兼容性检查
if (version.StartsWith("2.7"))
{
Console.WriteLine("使用 v2.7 系列");
}
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.7 或更高版本
if (major < 2 || (major == 2 && minor < 7))
{
Console.WriteLine($"错误:DLL版本过低({version}),需要 v2.7+");
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, 7))
{
Console.WriteLine("程序需要 DLL v2.7 或更高版本");
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");
}
}
授权状态 (License Status)
除了版本号,DLL 还提供运行授权状态查询。授权的激活与状态查询封装在 Authorization 静态类(Authorization.Activate() / Authorization.LicenseStatus,返回 LicenseStatus 枚举)。版本信息(本页 DllVersionHelper)与授权状态是两类独立信息:版本用于兼容性诊断,授权状态用于运行许可判断。
授权状态是一个枚举(State/状态返回枚举,不返回裸 int),取值如下:
| 枚举值 | 数值 | 含义 |
|---|---|---|
NotActivated | 0 | 未激活 |
Verifying | 1 | 校验中 |
Verified | 2 | 已验证(有效) |
Failed | 3 | 失败 |
Expired | 4 | 已过期 |
"有效"判据
有效授权的唯一判据 = 状态等于 Verified (== 2)。其余取值都表示授权当前不可用,应按对应原因处理(重新激活 / 等待校验 / 续期)。
注意事项
版本管理
在生产环境中,建议记录DLL版本信息到应用程序日志,便于问题追溯和版本管理。
校验和用途
Checksum 是 DLL 版本唯一标识码,主要用于快速区分不同构建版本,不应用于安全验证。