Skip to content

Development Environment

samatrhea edited this page Oct 18, 2026 · 5 revisions

Tools

  • .NET 10 SDK: required to build. global.json pins it and rolls forward to the latest 10.0 feature band. The code uses C# 14.
  • IDE: the core team uses JetBrains Rider. The solution contains a .DotSettings file with the team's ReSharper code style. Visual Studio 2026 and Visual Studio Code with C# Dev Kit work too.
  • NuGet: dependencies come from nuget.org. Their versions are managed centrally in Directory.Packages.props.

Solution layout

Project Purpose
ReqIFSharp the object model, ReqIFDeserializer, ReqIFSerializer and the embedded ReqIF and XHTML schemas (Resources)
ReqIFSharp.Extensions extension methods (ReqIFExtensions) and ReqIFLoaderService (Services)
ReqIFSharp.Tests NUnit tests for ReqIFSharp; sample ReqIF files are in TestData
ReqIFSharp.Extensions.Tests NUnit tests for ReqIFSharp.Extensions

Settings shared by all projects live in Directory.Build.props. Packaging settings shared by the two libraries, such as the package metadata, the README and the SBOM generation, live in Directory.Build.targets.

How the code is organized

  • Serialization lives on the model classes: each class reads and writes its own XML through internal ReadXml and WriteXml methods, with an ...Async variant of each. Keep the two in step when you change serialization.
  • ReqIfFactory maps concrete subtypes, such as the attribute definitions and datatypes, to and from their XML element names. A new concrete subtype needs an entry there.
  • ReqIfSchemaResolver resolves schema imports against the embedded resources, so validation works offline.
  • Classes take an optional ILoggerFactory and use NullLogger when none is given.

Conventions

  • Every source file starts with the Apache 2.0 Starion Group copyright header. Copy it onto new files.
  • Test fixtures are named *TestFixture and use NUnit 4.

Clone this wiki locally