ASN.1 Tools for C# — 改进历史记录

ASN.1 Tools for C# - version 5.0.1.1 (最新版本)

  • ASN.1/C# 工具现在包括 ASN.1 Studio v10.1.1。

ASN.1 Tools for C# - version 5.0.0

  • ASN.1/C# 工具现在包括 ASN.1 Studio v9.0.3。
  • ASN.1 编译器现在支持新的 -enablePartialDecode-partialDecodeOnly 命令行选项和 OSS.DataCallbackOSS.InfoCallback 编译器指令。 -enablePartialDecode-partialDecodeOnly 编译器选项指示编译器生成生成新 的代码 Codec 对象的 DecodePartial() 方法可供您使用。 该方法不返回解码的 PDU 值。 相反,它在解码每个由 OSS.DataCallbackOSS.Info Callback 编译器指令并可选择将解码后的字段值传递给它。
    部分解码功能使您能够
    • 无需编写代码即可提取数据以访问复杂 PDU 的深层嵌套字段。
    • 减少在其 PDU 中包含最少信息的应用程序的内存占用。
    该功能适用于 BER、DER、PER、UPER、CPER、CUPER、OER 和 COER 编码规则。
    有关详细信息,请参阅部分解码部分。
  • 已创建 LTE 和 5G 协议第 16 版的示例:
    • TS 38.463 (5g_e1ap_r16) V16.0.0 (2020-01)
    • TS 38.473 (5g_f1ap_r16) V16.0.0 (2020-01)
    • TS 38.413 (5g_ngap_r16) V16.0.0 (2020-01)
    • TS 38.423 (5g_xnap_r16) V16.0.0 (2020-01)
    • TS 36.413 (lte_s1ap_nb_iot_r16) V16.0.0 (2020-01)
    • TS 36.413 (lte_s1ap_r16) V16.0.0 (2020-01)
    • TS 36.423 (lte_x2ap_nb_iot_r16) V16.0.0 (2020-01)
    • TS 36.423 (lte_x2ap_r16) V16.0.0 (2020-01)
  • New samples have been created for:
    • 5G RRC 协议第 15 版:TS 38.331 (5G RRC) V15.7.0 (2019-09)。
    • SLmAP LTE 协议第 15 版:TS 36.459 (LTE SLmAP) V15.0.0 (2018-01)。
  • basic/threads 示例已创建。 该示例演示了如何在多线程应用程序中使用 OSS ASN.1/C# API。
  • LTE 和 5G 协议的第 13、14 和 15 版的示例已更新为使用可用的最新版本的 ASN.1 模式:
    • TS 38.463 (5g_e1ap_r15) V15.5.0 (2019-10)
    • TS 38.473 (5g_f1ap_r15) V15.7.0 (2019-10)
    • TS 38.413 (5g_ngap_r15) V15.5.0 (2019-10)
    • TS 38.423 (5g_xnap_r15) V15.5.0 (2019-10)
    • TS 29.171 (lte_lcs_r14) V14.3.0 (2019-09)
    • TS 29.171 (lte_lcs_r15) V15.3.0 (2019-09)
    • TS 36.455 (lte_lppa_r15) V15.2.1 (2019-01)
    • TS 36.331 (lte_rrc_cv2x_r14) V14.12.0 (2019-09)
    • TS 36.331 (lte_rrc_cv2x_r15) V15.7.0 (2019-09)
    • TS 36.331 (lte_rrc_nb_iot_r13) V13.14.0 (2019-06)
    • TS 36.331 (lte_rrc_nb_iot_r14) V14.12.0 (2019-09)
    • TS 36.331 (lte_rrc_nb_iot_r15) V15.7.0 (2019-09)
    • TS 36.331 (lte_rrc_r13) V13.14.0 (2019-06)
    • TS 36.331 (lte_rrc_r14) V14.12.0 (2019-09)
    • TS 36.331 (lte_rrc_r15) V15.7.0 (2019-09)
    • TS 36.413 (lte_s1ap_nb_iot_r13) V13.8.0 (2018-09)
    • TS 36.413 (lte_s1ap_nb_iot_r14) V14.9.0 (2019-07)
    • TS 36.413 (lte_s1ap_nb_iot_r15) V15.7.1 (2019-10)
    • TS 36.413 (lte_s1ap_r13) V13.8.0 (2018-09)
    • TS 36.413 (lte_s1ap_r14) V14.9.0 (2019-07)
    • TS 36.413 (lte_s1ap_r15) V15.7.1 (2019-10)
    • TS 36.423 (lte_x2ap_nb_iot_r13) V13.8.0 (2019-10)
    • TS 36.423 (lte_x2ap_nb_iot_r14) V14.8.0 (2019-10)
    • TS 36.423 (lte_x2ap_nb_iot_r15) V15.7.0 (2019-10)
    • TS 36.423 (lte_x2ap_r13) V13.8.0 (2019-10)
    • TS 36.423 (lte_x2ap_r14) V14.8.0 (2019-10)
    • TS 36.423 (lte_x2ap_r15) V15.7.0 (2019-10)

ASN.1 Tools for C# - version 4.7.0

  • ASN.1/C# 工具现在包括 ASN.1 Studio v9.0.0。
  • ASN.1 编译器现在支持 X.680 修正案 1。IMPORTS 子句允许从最新模块版本导入符号,如对象标识符所示,它现在可以包含 WITH SUCCESSORSWITH DESCENDANTS 作为 SelectionOption
  • 支持 .NET Standard 2.0。 用于 C# 的 OSS ASN.1 工具现在包括与 .NET Standard 2.0 兼容的运行时程序集的附加版本。 您可以使用它来面向实现 .NET Standard 2.0 规范的众多平台(例如,.NET Framework、.NET Core、Xamarin、Mono、UWP 等)。 与 .NET Standard 1.4 不同,.NET Standard 2.0 版本的 asn1csrt.dll 不要求 ASN.1 必须使用 - noSerializable 命令行参数。 它还支持使用 -genSchemaInfo 编译器选项生成的 C# 类。
  • 如果 ENCODED BY 不存在,JSON 编码器现在支持具有内容约束的 BIT STRING 或 OCTET STRING 类型的另一种编码形式。 当您选择此表单时,值将被编码为文本(JSON 值表示包含的值)而不是十六进制字符串。
  • 添加了对以下编译器指令的支持:
    • ASN1.Remove 指令。 该指令指示 ASN.1 编译器忽略 ASN.1 项。 目前,有以下限制:当使用 CANONICAL-XER 编码器时,ASN1.Remove 指令不能应用于具有 DEFAULT 值的组件(它们必须被编码,因此它们 无法删除)。
    • ASN1.DeferDecoding 指令。 当指定 ASN1.DeferDecoding 时,当 CHOICE、SEQUENCE 或 SET 结构中的特定组件的包含类型标记为解码时,编译器不会自动解码该组件。
  • 一种特殊类型的绝对引用表示法,允许您访问位于 WITH COMPONENTS 和 WITH COMPONENT(内部子类型)子句中的 ASN.1 类型,由两个美元符号 ($$) 后跟一个索引号组成 现在支持指示特定的 WITH COMPONENTS 或 WITH COMPONENT。 您现在可以在内部子类型或编译器生成的结构中存在的 CONSTRAINED BY 子句中分配用户定义的名称。
  • 已创建以下示例:
    • DIN EN 15722 智能交通系统 - ESafety - ECall 最小数据集标准的样本。 该示例演示了如何使用生成的 C# 类的 API 创建 ECallMessage 消息并将其序列化为 UPER 位。
    • eUICC 配置文件包标准的示例。 该示例演示了如何使用生成的 C# 类的 API 构建 eUICC 配置文件包并将其保存到磁盘文件。
    • GSMA 远程 SIM 配置标准示例。 该示例演示了如何使用生成的 C# 类的 API 在 SM-DP+ 上调用 ES9+ 接口的 GetBoundProfilePackage 函数。
  • 为 5G 协议的 3GPP 第 15 版创建了新示例:NGAP、XnAP、E1AP 和 F1AP。 LCSAP、LPPA、S1AP、M2AP、M3AP、RRC、SBcAP、XwAP、X2AP LTE 协议的样本已更新至 3GPP 第 15 版。
  • 已为 BTP 协议(ILP-RFC 0023:双边传输协议)创建了一个新示例。 该示例演示了 BTP 对等方如何使用 PrepareFulfillReject 请求。

ASN.1 Tools for C# - version 4.6.0

  • ASN.1/C# 工具现在包括 ASN.1 Studio v8.3.0。
  • 支持 ITU-T X.691 建议书 (08/2015) 指定的规范打包编码规则(ALIGNED 和 UNALIGNED)| 已添加 ISO/IEC 8825-2:2015:
    • -cper-cuper 编译器选项指示编译器启用对 CPER 的支持。
    • 为了更好的安全性,CPER 解码器在严格模式下运行:报告与 X.691 标准的每一次偏差。
    • 当指定 -cper-cuper 编译器选项时,将启用对 CANONICAL-PER 编码器和 CANONICAL-PER 解码器的支持。
    • BASIC-PER 解码器中实现了严格的一致性级别操作模式。
    • CPER 当前不支持以下 ASN.1 类型:SET OF、GeneralString 和 GraphicString。 当在 ASN.1 模式中遇到这些类型并且 -cper-cuper 编译器选项为 用过的。 运行时会在尝试对这些类型的值进行编码或解码时引发异常。
  • ASN.1 编译器支持 UPPERCAMELCASEDLOWERCAMELCASED 关键字 在 NAME 和 TEXT JER 编码指令中。
  • 已创建 LTE 协议第 14 版的新示例,并且已将第 12 版和第 13 版的现有示例更新为 ASN.1 模式的最新版本:
    • TS 29.171 (LCSAP) V13.3.0 (2017-06)
    • TS 29.171 (LCSAP) V14.1.0 (2017-06)
    • TS 36.455 (LPPA) V14.3.0 (2017-09)
    • TS 36.443 (M2AP) V13.3.0 (2016-03)
    • TS 36.443 (M2AP) V14.0.1 (2017-09)
    • TS 36.444 (M3AP) V13.2.0 (2016-03)
    • TS 36.444 (M3AP) V14.1.0 (2017-06)
    • TS 36.331 (RRC NB IOT) V13.7.1 (2017-09)
    • TS 36.331 (RRC NB IOT) V14.4.0 (2017-09)
    • TS 36.331 (RRC) V12.15.1 (2017-09)
    • TS 36.331 (RRC) V13.7.1 (2017-09)
    • TS 36.331 (RRC) V14.4.0 (2017-09)
    • TS 36.413 (S1AP NB IOT) V13.6.0 (2017-06)
    • TS 36.413 (S1AP NB IOT) V14.4.0 (2017-10)
    • TS 36.413 (S1AP) V12.7.0 (2016-03)
    • TS 36.413 (S1AP) V13.6.0 (2017-06)
    • TS 36.413 (S1AP) V14.4.0 (2017-10)
    • TS 29.169 (SBCAP) V12.10.0 (2017-09)
    • TS 29.169 (SBCAP) V13.3.0 (2017-09)
    • TS 29.169 (SBCAP) V14.1.0 (2017-09)
    • TS 36.331 (RRC CV2X) V14.4.0 (2017-09)
    • TS 36.423 (X2AP NB IOT) V13.7.0 (2017-06)
    • TS 36.423 (X2AP NB IOT) V14.4.0 (2017-09)
    • TS 36.423 (X2AP) V12.9.0 (2016-07)
    • TS 36.423 (X2AP) V13.7.0 (2017-06)
    • TS 36.423 (X2AP) V14.4.0 (2017-09)
    • TS 36.463 (XWAP) V14.2.0 (2017-06)
    • TS 32.297 (3GPP CDR) V14.0.0 (2017-03)

ASN.1 Tools for C# - version 4.5.0

  • ASN.1/C# 工具现在包括 ASN.1 Studio v8.2.0。
  • 符合 ITU-T 建议 X.jsoner 草案:
    • ASN.1/C# 编译器和 TOED 运行时库支持 JSON 编码规则。 现有的 -json 命令行选项指示编译器在运行时启用对 X.jsoner 的支持。
    • JSON 编解码器支持以下编码指令:
      • JER:ARRAY
      • JER:BASE64
      • JER:NAME
      • JER:OBJECT
      • JER:TEXT
      • JER:UNWRAPPED
  • 用于 C# 的 OSS ASN.1 工具现在包括与 .NET Standard 1.4 兼容的运行时程序集的附加版本。 您可以使用此版本的 asn1csrt.dll 运行时 DLL 在以下平台上开发应用程序:
    • Windows、macOS、Linux 上的 .NET Core 1.0
    • UWP 10.0
    • Xamarin
    要生成与 .NET Standard 兼容的 C# 类,请指定 -noserializable 编译器选项。
  • 添加了以下 LTE 协议的新示例:
    • LTE LCS-AP 示例演示了 TS 29.171 V13.2.0 (2016-03) LCS 应用协议。
    • LTE LPPa 示例演示了 TS 36.455 V13.1.0 (2016-03) LTE 定位协议 A。
    • LTE RRC C-V2X 示例演示了 TS 36.331 V14.2.2 (2017-03) LTE RRC 协议的 Sidelink 功能。

ASN.1 Tools for C# - version 4.4.0

  • ASN.1/C# 工具现在包括 ASN.1 Studio v8.1.0。
  • 添加了 -cxer 选项以支持 ASN.1/C# 工具中的规范 XML 编码规则 (CXER)。 此选项支持生成 CXER 编码器和 XER 解码器,因此可以对 CXER 消息进行编码和解码。
  • ASN.1/C# 工具现在支持对 BER、DER、XER 和 CXER 消息进行解码,而无需明确指定消息类型。 新的“-helperapi pdudecoder”编译器选项支持生成服务 PDU 解码器类,因此无需明确指定 PDU 类型即可解码 PDU。 BER、DER、XER 和 CXER 编解码器中提供了传入消息类型的自动检测功能。
  • 通过分别使用 -encodeonly 或 -decodeonly 编译器选项来减少使用编码器或解码器方法生成的类的代码大小。
  • ASN.1/C# PER 编码器-解码器实现现在符合最近的 X.691 勘误 (2015):包含在 BIT STRING 中的编码对于 PER ALIGNED 应该至少是一个八位字节,对于 PER UNALIGNED 应该是 1 位。
  • 新示例:
    • 已创建 J2735 协议 2016-03 版本的示例。 由于许可原因,该示例不包括 J2735:2016 ASN.1 规范。 用户应直接从 ITS SAE 站点获取。
    • 已创建 3GPP XwAP (TS 36.463) 协议的示例。

ASN.1 Tools for C# - version 4.3.1

  • ASN.1/C# 工具现在包括 ASN.1 Studio v8.0.0。

ASN.1 Tools for C# - version 4.3

  • ASN.1/C# 工具现在包括 ASN.1 Studio v7.5.1。
  • 添加了对扩展 XML 编码规则 (E-XER) 的支持。
  • 添加了“RecursionLimit”解码器选项。 当循环定义类型的值被解码时,此选项限制嵌套递归调用的深度。

ASN.1 Tools for C# - version 4.2

  • ASN.1/C# 工具现在包括 ASN.1 Studio v7.4
  • 添加了对以下编码规则的支持:可分辨编码规则 (DER)、规范八位字节编码规则 (COER)、XML 编码规则 (XER)。
  • ASN.1 编译器已得到增强,可生成一个示例程序,该程序向您展示如何为模式中定义的类型编码、解码或打印 PDU 和值对象。 使用 -sampleCode 命令行选项生成示例程序。
  • Copy() 方法已添加到 PDU 类中。 该方法实现对象的深层副本。
  • JSON 编解码器现在支持将可选字段编码为 <key>:null 的替代格式(例如“DateOfBirth”:null)。
  • ASN.1 编译器现在生成人类可读的字符串(而不是字节数组)来初始化 UTF8String 字段。
  • JSON 编码器现在支持 EncodeImpliedValues 选项,该选项可以在 JSON 输出中对空 PDU 字段(它们暗示默认值)进行编码。 默认情况下,这些字段的值不包含在输出中。
  • ValueNotationFormatter 类现在支持 PrintImpliedValues,它可以在格式化输出中打印空 PDU 字段(它们暗示默认值)。

ASN.1 Tools for C# - version 4.1

  • ASN.1/C# 工具现在包括 ASN.1 Studio v7.3。
  • 支持 JSON。 引入了 ASN.1 的 JSON 编码规则以促进基于 JSON 的架构的扩展。 使用 JSON ER,您可以保留文本 (JSON) 编码的强大功能,同时利用与二进制 (ASN.1) 编码之间的转换来实现快速传输或紧凑存储。
  • 新的编译器选项“-prefix <string>”。 此选项指示编译器生成具有指定字符串前缀的顶级标识符。
  • 改进了比较 SET OF/SEQUENCE OF 值的实现。 现在支持在 3 个或更多级别上比较嵌套的 SET OF/SEQUENCE OF。

ASN.1 Tools for C# - version 4.0

  • C# v4.0 的 OSS ASN.1 工具是对产品的完全重新实现,具有以下目标:
    • - 提高编码/解码速度
        (与之前的 ASN.1/C# 版本相比,现在平均快 10 倍)
    • - 改进的 API
    • - 支持八位字节编码规则 - OER

ASN.1 Tools for C# - version 3.1

  • ASN.1/C# 工具现在包括 ASN.1 Studio,这是一个功能强大的新 IDE,包含允许您编译 ASN.1 规范、显示、创建、修改或编码消息的功能,只需单击几下鼠标,等等 !
  • ASN.1/C# 工具现在安装在 Program Files\OSS Nokalva\asn1csharp\ 文件夹下(而在 3.1 版本之前,它们安装在 Program Files\OSS\asn1csharp\ 下)。
  • 示例现在安装在环境变量 %ALLUSERSPROFILE% 指向的文件夹下。 默认情况下,在 Windows 7 和 VISTA 上,示例安装在 C:\ProgramData\OSS Nokalva\asn1csharp\win32\\samples 文件夹下,并且 在 Windows XP 上,示例安装在 C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1csharp\win32\<version-number>\samples 下 文件夹。

ASN.1 Tools for C# - version 2.2

  • C# 的 OSS ASN.1 编译器现在支持新的命令行选项 -namesForVB/-noNamesForVB,以启用/禁用适用于 Visual Basic .NET 应用程序的 C# 属性和方法的名称生成。 为了向后兼容,ASN.1 编译器的默认行为是生成大小写不同的名称。 我们建议 Visual Basic 开发人员使用新选项来避免与大小写相关的问题。
  • 运行时 Asn1Exception 现在可以成为 Serializable 对象。

ASN.1 Tools for C# - version 2.1

  • OSS ASN.1 Tools for C# version 2.1支持ISO 8601规定的全部时间类型(时间, 日期, 当日时间, 日期-时间, 持续时间)。这些日期和时间的表示方法被标准化,以避免跨国界的误解。新的运行时类型Asn1TimeType(时间)、Asn1DateType(日期)、Asn1DateTimeType(日期-时间)、Asn1DurationType(持续时间)和Asn1TimeOfDayType(当日时间)都可以用来支持这些新的时间类型。
  • 一个新的命令行选项,-partialClasses,使编译器为类型、对象、对象类、对象集和包含模块值的类生成C#部分类。生成的部分类是专门用于微软.NET框架2.0的。它们允许一个类的定义被分割到两个或更多的源文件中,以方便维护和开发。
  • 一个新的命令行选项 -useXmlNames 指示编译器为类型引用生成附加类、为类型属性生成不同名称以及为命名标识符常量生成附加名称。 这些额外的类、属性和常量的名称与类和类成员的扩展 XER 编码中使用的名称相匹配。 ASN.1 编译器从 E-XER NAME 或 TEXT 编码指令中导出这些组件的名称。
  • 运行时方法 ToString() 现在使用 ASN.1 值表示法提供实例值的表示。 请注意,或者允许访问更多信息的 Asn1TypeExplorer 类,例如构造类型的每个组件的引用类型名称,仍然可用。
  • 点击地图上的流量导出器设备,然后在左侧图标栏中点击重试动画
  • 通用方法现在可用于 Asn1ConstructedType (SEQUENCE, SET, CHOICE) 和 Asn1ConstructedOfType (SEQUENCE OF, SET OF),以允许在不知道这些组件的确切类型的情况下操作构造类型的内部组件。
  • 运行时方法 Validate() 现在会抛出 Asn1ValidationException(extendAsn1Exception),以便在使用验证编码器或解码器时进行更清晰的异常处理。

ASN.1 Tools for C# - version 2.0

  • 扩展 XML 编码规则 (E-XER) 支持已添加到 C# 的 OSS ASN.1 工具中。 现在,您可以通过 ASN.1 获得 XML 的全部功能。 Extended-XER 编码使 ASN.1 成为一种与 XSD 一样强大的 XML 模式表示法,具有 ASN.1 的简单性。
  • 一个新的编译器选项 -lineSeparator 允许您为 XER 或 E-XER 编码指定您选择的行分隔符转义序列(例如,创建 DOS 类型的行格式)。
  • 新的命令行选项 -asn1ModuleNamespace 允许您为 ASN.1 模块定义命名空间。 当与另一个新选项 -noModule 结合使用时,共享模块(即,一个从其中导入多个模块的模块)可以独立地用作每个协议生成的 API 的公共 C# DLL。
  • 新方法 GetAsn1TypeElements() 和 AddAsn1Type() 允许您获取元素列表并添加元素以便更轻松地处理 SEQUENCE OF/SET OF 类型。

ASN.1 Tools for C# - version 1.3

  • 新的编译器选项 -verbose/-noverbose 控制是否显示详细的编译时状态消息。 指定 -verbose 将导致显示详细信息,例如当前正在读取的输入文件的名称、正在使用的许可证文件的内容等。
  • XER 编码器中添加了一个新的运行时属性 sortSetOf,以控制 SET OF 组件的排序。