All notable changes to ReqIFSharp are documented in this file.
The format is based on Keep a Changelog, and the project follows Semantic Versioning. Numbers such as #67 refer to the issue or pull request of the change.
The repository ships two NuGet packages that version independently: ReqIFSharp and ReqIFSharp.Extensions. Each release is listed under its ReqIFSharp version; the ReqIFSharp.Extensions version released with it is named below the heading, and changes that only concern ReqIFSharp.Extensions are marked as such. A release of ReqIFSharp.Extensions alone is headed by its own name and version. Dates are the dates the packages were published on NuGet.
AttributeValueXHTML.ExtractNormalizedTextFromValue(bool keepLineBreaks = false)returns the text of an XHTML value as plain text: runs of spaces, tabs and line breaks are collapsed to one space (non-breaking spaces are kept), no space is added around inline elements, and block elements such as paragraphs and list items are separated by a space or, withkeepLineBreaks, by a line feed. The text of apreelement is kept as written, and HTML named entities such as are turned into their characters.ExtractUnformattedTextFromValueis unchanged (#92).
- A
REQ-IFroot element in a namespace other than the ReqIF namespace (http://www.omg.org/spec/ReqIF/20110401/reqif.xsd) is no longer read as a ReqIF document; it is skipped and a warning is logged. Before, such an element was read when it had no prefix. A root in no namespace is still read (#87). - An element other than
SPEC-RELATION-REFinside theSPEC-RELATIONSof a relation group is now skipped with a warning, and the references after it are read. Before, it caused anXmlException(#94). - An element that has the name of a ReqIF element but is in another namespace (for example
<other:THE-VALUE xmlns:other="...">) is no longer read as that ReqIF element. It is skipped, with its content, and a warning is logged. Elements in the ReqIF namespace or in no namespace are read as before, in any document (#97).
- A document that binds the ReqIF namespace to a prefix (
<reqif:REQ-IF xmlns:reqif="...">) was read as zero documents, and type, source/target and relation-group references in it were not read. Elements are now matched on their local name and namespace (#87). - A document without whitespace between its elements (minified XML) lost data without an error: every other header field (such as
CREATION-TIMEandREQ-IF-TOOL-ID) and every other enumeration value of an attribute value was skipped, and the spec relations of a relation group were not read or caused anXmlException(#94). AttributeValueXHTML.TheOriginalValuewas not read fromTHE-ORIGINAL-VALUE, so it was alwaysnullafter reading, and a document that was read and written again lost the original values of its simplified XHTML attribute values (#95).- Attribute values did not log anything, also when an
ILoggerFactorywas passed to the deserializer: theAttributeValueconstructors did not keep the logger factory. An enumeration attribute value no longer reports its own element and itsDEFINITIONandVALUESelements as not supported (#97). new AttributeValueXHTML(loggerFactory)leftExternalObjectsnull, soQueryExternalObjectsandQueryBase64PayloadsAsyncof ReqIFSharp.Extensions threw for a spec element that held such a value.new AttributeValueXHTML()left its loggernull, so reading into it threw (#98).
10.1.2 - 2026-10-18
ReqIFSharp.Extensions 5.2.2
- Update Microsoft.Sbom.Targets to version 4.1.13 (#81); also for ReqIFSharp.Extensions.
- Centralize the shared MSBuild and package settings in
Directory.Build.propsandDirectory.Build.targets(#83). - Building from source requires the .NET 10 SDK (
global.json) and C# 14 (#83). - ReqIFSharp.Extensions: update to ReqIFSharp 10.1.2.
10.1.1 - 2026-09-05
ReqIFSharp.Extensions 5.2.1
- Update dependencies.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.1.1.
10.1.0 - 2026-06-06
ReqIFSharp.Extensions 5.2.0
- UML-like metadata decorators on the model (#27).
- Lower the minimum required version of Microsoft.Extensions.Logging.Abstractions to 6.0.0 (#77).
- ReqIFSharp.Extensions: update to ReqIFSharp 10.1.0.
- Retain the namespaces and attributes of the root element when a document is read and written again (#44).
10.0.6 - 2026-05-18
ReqIFSharp.Extensions 5.1.0
- Deterministic builds and packing in CI, so packages are reproducible (#71).
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.6.
- Dispose the manifest resource stream in
GetSchemaFromResource(#69). - ReqIFSharp.Extensions: remove the trailing space from
ExternalObject.CreateUrl(#68). - ReqIFSharp.Extensions: honor the
CancellationTokeninQueryBase64PayloadsAsync(#67). - ReqIFSharp.Extensions: dispose the streams of
ReqIFLoaderServicedeterministically (#66).
10.0.5 - 2026-05-14
ReqIFSharp.Extensions 5.0.5
- Update Microsoft.Extensions.Logging.Abstractions to version 10.0.8.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.5.
10.0.4 - 2026-04-24
ReqIFSharp.Extensions 5.0.4
- Update Microsoft.Extensions.Logging.Abstractions to version 10.0.7.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.4.
10.0.3 - 2026-02-20
ReqIFSharp.Extensions 5.0.3
- Update Microsoft.Extensions.Logging.Abstractions to version 10.0.3.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.3.
10.0.2 - 2025-12-20
ReqIFSharp.Extensions 5.0.2
- Update Microsoft.Sbom.Targets to version 4.1.5.
- Update Microsoft.Extensions.Logging.Abstractions to version 10.0.1.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.2.
10.0.1 - 2025-11-30
ReqIFSharp.Extensions 5.0.1
- Include the LICENSE and NOTICE files in the NuGet package; the NOTICE file is updated.
- Update Microsoft.Sbom.Targets to version 4.1.4.
- Update Microsoft.Extensions.Logging.Abstractions to version 10.0.0.
- Call
token.ThrowIfCancellationRequested()directly. - ReqIFSharp.Extensions: update to ReqIFSharp 10.0.1.
10.0.0 - 2025-11-12
ReqIFSharp.Extensions 5.0.0
- Read
SpecHierarchy.IS-TABLE-INTERNAL.
- Breaking: all
intproperties are nowlong. The ReqIF specification defines integers as mathematically unbounded;longis the practical choice. - When
XmlConvertthrows an overflow exception while reading an XML attribute, the property is set to its default value (#60). - Log the line number and line position when an element is not known.
- Update Microsoft.Sbom.Targets to version 4.1.3.
- ReqIFSharp.Extensions: update to ReqIFSharp 10.0.0.
9.2.4 - 2025-10-18
ReqIFSharp.Extensions 4.2.3
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.10.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.2.4.
9.2.3 - 2025-10-04
ReqIFSharp.Extensions 4.2.2
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.9.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.2.3.
9.2.2 - 2025-09-04
No ReqIFSharp.Extensions release.
- Update Microsoft.Sbom.Targets to version 4.1.2.
9.2.1 - 2025-08-08
ReqIFSharp.Extensions 4.2.1
- Generate an SBOM and include it in the NuGet package; also for ReqIFSharp.Extensions.
- Include the XML documentation in the NuGet package; also for ReqIFSharp.Extensions.
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.8.
- Improve the documentation.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.2.1.
9.2.0 - 2025-07-16
ReqIFSharp.Extensions 4.2.0
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.7.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.2.0.
9.1.0 - 2025-02-19
ReqIFSharp.Extensions 4.1.0
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.2.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.1.0.
9.0.0 - 2025-01-19
ReqIFSharp.Extensions 4.0.0
- ReqIFSharp.Extensions:
ReqIFLoaderServiceimplementsIDisposable. - ReqIFSharp.Extensions:
ReqIFLoaderServiceconstructor that takes anILoggerFactory.
- Breaking: async methods that return a
Taskare renamed to end in...Async; also in ReqIFSharp.Extensions. - Improve the exceptions thrown by async methods, using
nameofthroughout. - Improve logging.
- Update Microsoft.Extensions.Logging.Abstractions to version 9.0.1.
- ReqIFSharp.Extensions: improve argument validation.
- ReqIFSharp.Extensions: update to ReqIFSharp 9.0.0.
8.1.1 - 2024-10-19
ReqIFSharp.Extensions 3.1.1
- Update Microsoft.Extensions.Logging.Abstractions to version 8.0.2.
- ReqIFSharp.Extensions: update to ReqIFSharp 8.1.1.
8.1.0 - 2024-05-14
ReqIFSharp.Extensions 3.1.0
- Apply SonarQube improvements.
- ReqIFSharp.Extensions: update to ReqIFSharp 8.1.0.
- (De)serialization of
AlternativeID(#54). - Serialization of the
xml:langattribute.
8.0.0 - 2024-04-27
ReqIFSharp.Extensions 3.0.0
- Copyright holder is now Starion Group S.A.; also for ReqIFSharp.Extensions.
7.1.1 - 2024-04-13
ReqIFSharp.Extensions 2.1.1
- Update Microsoft.Extensions.Logging.Abstractions to version 8.0.1.
- ReqIFSharp.Extensions: update to ReqIFSharp 7.1.1.
7.1.0 - 2023-12-07
ReqIFSharp.Extensions 2.1.0
- Update Microsoft.Extensions.Logging.Abstractions to version 8.0.0.
- ReqIFSharp.Extensions: update to ReqIFSharp 7.1.0.
7.0.1 - 2023-07-15
ReqIFSharp.Extensions 2.0.1
- Update Microsoft.Extensions.Logging.Abstractions to version 7.0.1.
- ReqIFSharp.Extensions: update to ReqIFSharp 7.0.1.
7.0.0 - 2022-11-09
ReqIFSharp.Extensions 2.0.0
- Update Microsoft.Extensions.Logging.Abstractions to version 7.0.0.
- ReqIFSharp.Extensions: update to ReqIFSharp 7.0.0.
6.0.1 - 2022-08-04
ReqIFSharp.Extensions 1.0.1, the first stable release of ReqIFSharp.Extensions.
SupportedFileExtensionKindon the deserializer (#47).- Serialize to the
reqif,reqifzandzipformats (#23).
- Breaking:
IReqIFSerializerandReqIFSerializerare made symmetrical to theIReqIFDeSerializerinterface. - Update Microsoft.Extensions.Logging.Abstractions to version 6.0.1.
- ReqIFSharp.Extensions: update to ReqIFSharp 6.0.1.
- Set the stream to position 0 before creating the
XmlReader(#43). ZipArchiveEntrydisposed error whenReqIFSerializer.SerializeAsyncwrites a large.reqifzfile.
ReqIFSharp.Extensions 1.0.0-RC3 - 2022-07-23
Release of ReqIFSharp.Extensions only; it uses ReqIFSharp 6.0.0-RC1.
- ReqIFSharp.Extensions:
SpecRelationTypeExtensions.QueryReferencingSpecRelations. - ReqIFSharp.Extensions:
SpecificationTypeExtensions.QueryReferencingSpecifications. - ReqIFSharp.Extensions:
SpecObjectTypeExtensions.QueryReferencingSpecObjects. - ReqIFSharp.Extensions: a dedicated package icon.
- ReqIFSharp.Extensions: improve exception messages.
6.0.0-RC1 - 2022-07-22
ReqIFSharp.Extensions 1.0.0-RC2
Pre-release of the changes listed under 6.0.1, except the logging update and the ZipArchiveEntry fix.
- ReqIFSharp.Extensions: update to ReqIFSharp 6.0.0-RC1.
5.0.3 - 2022-06-10
ReqIFSharp.Extensions 1.0.0-RC1
- ReqIFSharp.Extensions: first pre-release of the package. It provides query extension methods on the ReqIFSharp model (attribute definitions and values, datatype definitions, external objects, spec hierarchies, spec objects, specifications) and the
ReqIFLoaderService.
- Improve the XML documentation.
5.0.2 - 2022-04-07
- Improve the code quality of
ReqIF.csas reported by SonarQube.
5.0.1 - 2022-01-20
ExternalObjectdeserialization when thedataattribute is not the first attribute of thexhtml:objectelement (#39).
5.0.0 - 2022-01-01
- Deserialize from a stream, also through the
IReqIFDeSerializerinterface (#22). - Async deserialization (#24).
ExtractUnformattedTextFromValueto extract the unformatted text from an XHTML attribute (#25).- Serialize to a stream (#29).
- Async serialization (#31).
- Logging through Microsoft.Extensions.Logging.Abstractions (#36).
CreateExternalObjectsAsync.
ExternalObject.QueryLocalDatais refactored (#22).ReqIFSerializerno longer usesXmlSerializer; all work is done withXmlReaderandXmlWriter(#30).CreateExternalObjectsuses anXmlReader.- Breaking: the read and write (async) XML methods are internal; they are not part of the public API.
- Breaking: validation features of
IReqIFSerializerandReqIFSerializer. - Breaking: the use of
IXmlSerializable, including theGetSchema()method.
- Deserialization of
AlternativeIdforDatatypeDefinition,SpecHierarchyandSpecType(#33).
4.0.0 - 2021-11-10
- Serialization of the
DefaultValueproperty ofIdentifiable(#21). - Update the icon and license properties of the project file.
- Breaking: the
netstandard1.6andnet45targets (#20).
3.1.0 - 2021-06-18
ExternalObjectclass to access the external objects referenced inAttributeValueXHTMLinstances (#18).
3.0.1 - 2021-06-16
- Serialization of the default values of attribute definitions (#17).
3.0.0 - 2021-03-21
- Breaking:
IReqIFDeSerializerreturns anIEnumerableofReqIFto improve.reqifzsupport.
- Deserialization and serialization of
TOOL-EXTENSIONS(#16).
2.0.0 - 2019-10-24
- Breaking: 32-bit integers (
int) are replaced by 64-bit integers (long) (#13).
1.4.1 - 2019-02-11
- Serialization of the
IS-SIMPLIFIEDproperty of theAttributeValueXHTMLclass (#11).
1.4.0 - 2018-11-13
- Create a mock object when a referenced object is not found in the sources (#10).
AttributeValueXHTMLusesXmlConvertinstead ofbool.Parseandbool.ToString().
1.3.2 - 2018-06-04
- Read the
MAX-LENGTHattribute ofDatatypeDefinitionString. - Read the
ACCURACYattribute ofDatatypeDefinitionReal.
ReadXmlofDatatypeDefinitionInteger,DatatypeDefinitionRealandDatatypeDefinitionStringuses theXmlReader.
- (De)serialization of the datatype definition classes uses
XmlConvertinstead ofint.Parseanddouble.Parse.
1.3.1 - 2018-06-02
ReadXmlofAttributeDefinition.IsMultiValued.ReadXmlofDatatypeDefinitionInteger.MaxandDatatypeDefinitionInteger.Min.
1.3.0 - 2018-03-27
- Support for
.reqifzfiles.
1.2.0 - 2018-01-07
AttributeValue.ValueObjectconvenience property to get and set the value of any concreteAttributeValuefrom the abstract type.
1.1.0 - 2017-08-02
- Support for
netstandard1.6.
1.0.6 - 2017-07-31
- Upgrade the project to the Visual Studio 2017 project file format; update the NuGet authors and icon URL.
1.0.5 - 2017-06-28
- Processing of the default values of attributes.
1.0.4 - 2017-06-27
- Reading the default value of an
AttributeDefinition.
1.0.3 - 2017-06-20
- Handling of XHTML attributes.
1.0.2 - 2017-01-20
- The source and target of a specification during deserialization.
1.0.1 - 2017-01-12
- First public release under the Apache 2.0 license, after extensive testing on CDP4™.