The summary below describes major new features, items of note and breaking changes.
The links above require a login.
UseModelBuilder<T>, but support for other configurations (ad-hoc/faked models in tests) derives more clearly from there. See Metadata Architecture in the conceptual documentation for more information.
GetFormattedGraph()methods for all hierarchical types were hard-coded in previous versions. Now, products inject the appropriate type (e.g.
IExpressionGraphFormattingAlgorithm) and call methods on these objects instead. Additionally, we've created documentation for how a product can implement support its own data hierarchies. See Object Graphs in the conceptual documentation for more information.
quinocommand-line utility that replaced the
Quino.Utilspackage in 6.x has also been extended to support both TeamCity and Azure DevOps. We're using this tool both locally (to update versions and standardize projects) as well as in CI (to set version, update nuspec files for .NET Framework projects and to enable documentation). Both SDK and Framework-style project types are fully supported. We plan to extend the tool further to provide more of the functionality that
Quino.Utilsused to provide (e.g. updating source headers and fixing myriad project properties). See Tools and, in particular, quino fix in the conceptual documentation for more information on where we are headed.
Noneis no longer supported (there is always a user context) and the default is now
UseOperator, which uses (but does not authenticate) as the OS user that executed the software. Single sign-on products would use
AuthenticateOperator. See QNO-6147 for more information.
GetListdidn't avoid allocating a ton of memory by the end of the iteration. We detected this when indexing data for Lucene support in a custom product. See QNO-6125 and QNO-5425 for more information.
[CanBeNull]annotations for parameters and return types. Many APIs also include
[Pure]where appropriate. The annotations are retained and delivered with the NuGet packages, where ReSharper makes use of them in dependent products. See QNO-6092 for more information.
RunMode.Debugnow stop in the debugger at the point that they are thrown. Previous versions included a global catch/re-throw handler used to maintain statistics. Errors are now added to statistics in debug mode only if a specific option is set, so that proper debugging behavior has priority, rather than the other way around. See QNO-5723 for more information.
The recommended upgrade path is as follows:
Encodo.*packages. Make note of which packages you've uninstalled.
Quino.*.Corepackage for the
Encodo.*packages you uninstalled in the step above.
Quino.Processesif you were using the
All Quino.WebApi and Quino.Windows packages now target .NET Framework 4.7.2. We made this change to improve interoperability with .NET Standard and .NET Core packages, on a recommendation from Microsoft. See QNOWIN-241 for more information.
We renamed all
Encodo.* packages to
Quino.Core*. Since this change does not affect high-level packages, most solutions should be largely unaffected. However, if a solution had included one of the
Encodo.* assemblies directly, then you need to manually remove that reference and include the
Quino.*.Core package instead.
Additionally, we reduced the surface area of
Quino.Application.Core (previously named
Encodo.Application) by moving significant parts into sub-packages:
Quino.Configuration: contains all support for
IKeyValueNode<T>nodes and for loading/managing configuration
IFeedbackand supporting types and methods
Quino.CommandLine: all command-line support
Quino.Application.Core still depends on these three packages, but they can now also be used independently of pulling in the full application support.
We also replaced the following packages:
with the following packages:
Clients and servers should instead include the server or client package, respectively and the desired protocol packages. Configure the server with
and the client with
All namespaces now begin with
Encodo.Quino. Types that used to begin with just
Quino) are now in the
Encodo.Quino namespace. For example,
Encodo.Core.Bit is known as
IProcessManageris no longer in the
Encodo.Applicationpackage. It is now in the
IEventAggregatoris no longer in the
Encodo.Corepackage. It is now in the
IPayloadFactoryand its associated types are no longer in the
Encodo.Connectionspackage (nor is it the renamed
Quino.Connections.Corepackage). Instead, you can find these base types in the
IMetaPropertyPathno longer extends
IList<IMetaProperty>and is now immutable. The implementation
MetaPropertyPathis also now immutable. Use the
ToList()extension methods to get information about the path.
Sign up for our Newsletter