php做网站教程,wordpress优化检测,开发一个小程序大约需要多少钱,wordpress插件论坛使用C#语言编写的应用程序可以通过.NET Framework框架提供的Version类来控制每次发布的版本号#xff0c;以便更好控制每次版本更新迭代。
版本号由两到四个组件组成#xff1a;主要、次要、内部版本和修订。
版本号的格式如下所示#xff0c; 可选组件显示在方括号 ([ 和…使用C#语言编写的应用程序可以通过.NET Framework框架提供的Version类来控制每次发布的版本号以便更好控制每次版本更新迭代。
版本号由两到四个组件组成主要、次要、内部版本和修订。
版本号的格式如下所示 可选组件显示在方括号 ([ 和 ]) 中
major.minor[.build[.revision]]
可以使用指定的主版本号、次版本号、内部版本号和修订号初始化 Version 类的新实例。
示例
// 实例
Version(Major, Minor, Build, Revision);/*
其中,
Marjor主要版本号
Minor次要版本号
Build内部版本号
Revision修订号new Version(1, 0, 0, 1);
或
new Version(1.0.0.1);
*/
C# 代码片段
/ 创建Version类对象
var version new Version(1.0.0.1);/* 注使用Version类作为EF实体对象属性的类型进行映射对应SQL Server表的字段类型为binary(16) */
因实际业务需要将应用程序每次更新的版本号信息持久化存储在SQL Server数据库中Entity Framework实体框架允许使用 Version类 作为属性类型直接映射。
注Entity Framework 简称EF。
EF实体框架对映射 Version 类型值自动转换成SQL Server数据库中的固定长度16位二进制类型binary值进行存储。
对Version类型映射转换binary(16)类型值分析
存储到SQL Server数据表中版本号值转换后格式0x0000000100000000[0000000000000000]。 需要分别对每位的版本号值十进制进行十六进制数转换再对每个版本号十六进制数组合成新的十六进行制数值。
如
版本号1.0.0.1
转换十六进制 1 0 0 1
0x00000001 0x00000000 0x00000000 0x00000001
组合新的十六进制数注除了从左到右第一位保留0x十六进制前缀外其他版本号转换都去掉前缀
0x00000001000000000000000000000001 SQL Server 数据库没有提供C#语言Version类生成的二进制类型值(binary)的转换函数为了实现通过编写SQL语句来插入可以互动转换Version类型的数据自定义了版本号转换binary类型的处理函数dbo.versionstrtobinary。
SQL代码
/*
功能将版本号如1.0.0.1转换为长度为 16 个字节的固定长度二进制binary数据处理
说明C#开发语言使用的Version类型值即版本号转换成SQL Server数据库中存储二进制类型[binary]处理
*/
IF EXISTS (SELECT * FROM sys.objects WHERE NAMEversionstrtobinary)DROP FUNCTION dbo.versionstrtobinary;
GO
CREATE FUNCTION dbo.versionstrtobinary
(version varchar(max)
)
RETURNS binary(16)
AS
BEGINDECLARE value intDECLARE bin binary(16)DECLARE binStr nvarchar(max)DECLARE minor varchar(max) -- 版本号DECLARE versionStr nvarchar(max) version;DECLARE j int 1;DECLARE i int 0;set i CHARINDEX(., versionStr); DECLARE flag bit 1;WHILE flag 1BEGINif (i 0)BEGINSET minor versionStr;ENDELSEBEGIN-- 截取版本号值set minor SUBSTRING(versionStr, 1, i-1);END-- 将版本号值转换为int类型set value CAST(minor as int);-- 注sys.fn_varbintohexsubstring()函数第1个参数表示是否保留0x前缀1为保留0为不保留if (j 1)BEGIN set binStr sys.fn_varbintohexsubstring(1, CONVERT(VARBINARY(50), value), 1, 0);ENDelseBEGINset binStr binStr sys.fn_varbintohexsubstring(0, CONVERT(VARBINARY(50), value), 1, 0);ENDset versionStr SUBSTRING(versionStr, i1, LEN(versionStr) - i);set i CHARINDEX(., versionStr);if (j LEN(version) - 3)BEGINbreak;ENDset j j 1;ENDset bin convert(binary(16), binStr, 1); -- 如果字符串前面有0x字符那么使用风格1设置style1如果字符串前面没有0x字符那么使用风格2设置style2RETURN bin
END-- 测试函数0x00000001000000000000000000000006
select dbo.versionstrtobinary(1.0.0.6);-- 插入Version类型数据SQL语句INSERT Versions (Version) VALUES (dbo.versionstrtobinary(1.0.0.1)); GO参考资料
Version 类 (System) | Microsoft Learn
binary 和 varbinary (Transact-SQL) - SQL Server | Microsoft Learn