Version 2.3.6955.0
TcHmiSrvExtNet.Core version 2.3.6955.0 was released on May 20, 2025.
New features in this release
- Property TcHmiJSchemaGeneratorEscapeUris was added to specify whether UriEscapeDataString(String) should be used to escape URIs in "$ref" values. The default value of this property is false for backward compatibility reasons. However, new TwinCAT HMI server extensions that use instances of the TcHmiJSchemaGenerator class should set this value to true to ensure that URIs are properly escaped because according to the JSON Schema specification, the value of "$ref" is a URI-reference and according to RFC 3986 URI-references must be percent-encoded. When you change the value of this property to true in order to use the generated JSON schemas with an instance of the DynamicSymbolsProvider class, you should also pass escapeUris: true to one of its new constructors to handle "definitions" and "$ref" values correctly.
- Property TcHmiJSchemaGeneratorSchemaIdGenerator was added to configure JSON schema ID generation. By default, TypeToString is used to generate a JSON schema ID from a Type. You can set this property to use another method for JSON ID generation.
- Method TcHmiJSchemaGeneratorCreateGenerator(SchemaPropertyOrderHandling, SchemaReferenceHandling, Boolean, IEnumerableJSchemaGenerationProvider, IContractResolver, IContractResolver, Boolean, FuncType, String) was added to be able to set initial values for the properties TcHmiJSchemaGeneratorEscapeUris and TcHmiJSchemaGeneratorSchemaIdGenerator when creating a new instance of the TcHmiJSchemaGenerator class.
- The following constructors were added to the DynamicSymbolsProvider and SortedDynamicSymbolsProvider classes to specify whether URIs in "$ref" values are escaped and thus handled correctly when trying to find the corresponding entry in the "definitions":
- DynamicSymbolsProviderDynamicSymbolsProvider(IEnumerableKeyValuePairString, Symbol, IComparerString, Boolean, Boolean)
- DynamicSymbolsProviderDynamicSymbolsProvider(IEnumerableKeyValuePairString, Symbol, Boolean, Boolean)
- DynamicSymbolsProviderDynamicSymbolsProvider(Boolean, Boolean)
- SortedDynamicSymbolsProviderSortedDynamicSymbolsProvider(IEnumerableKeyValuePairString, Symbol, IComparerString, Boolean, Boolean)
- SortedDynamicSymbolsProviderSortedDynamicSymbolsProvider(IEnumerableKeyValuePairString, Symbol, Boolean, Boolean)