v7.0.x: Code-generation, Tooling and Performance Improvements

6/14/2019 - Marco von Ballmoos (updated on 9/18/2020)

The summary below describes major new features, items of note and breaking changes.

The links above require a login.


  • We fixed an old performance issue in Quino-Windows Winform support in the MetaEditPanel where the PropertyChanged listener was attached twice on initialization and again each time the layout was updated. This led to increasingly slow UIs as the same property-change was propagated n times. (QNOWIN-278)
  • We fixed a bug where properties with the same name but different paths were generated with the same name in search details. This had the effect that, Company.Id and Id both bound to the same control. (QNOWIN-276) It also had the effect that some bindings failed for nexted fields. (QNOWIN-273)
  • In the web, we improved the file-uploading controller (QNOWEB-110 and QNOWEB-91)
  • All web controllers, return types and responses are now 100% documented and available via Swagger. (QNOWEB-100)
  • GenericObject.ValuesChanged is no longer reset to false whenever a value is loaded from the data handler (it is now set to false only when no values are marked as changed). (QNO-6182)
  • Improved the quino tool to support code-generation and -migration. (QNO-6161)
  • Improved language-specific property-handling (QNO-6241, QNO-6225)
  • Improved logging configuration (QNO-6186, QNO-6220, QNO-6222)

Breaking Changes

  • Moved IToken and Token from Quino.Connections to Quino.Security.
  • Split Quino.Cryptography out of Quino.Security.Core
  • Moved IExtendedApplicationDescription to Quino.Application.Core
  • The interface IPersistentObjectContext now implements IScope rather than IScopedContext. The Push() and Pop() methods are no longer available.
  • The EnableExternalLog() and DisableExternalLog() methods have been moved from the Encodo.Quino.App to the Encodo.Quino.Logging namespace.
  • The functionality formally declared as extension methods for IMessageFormatter has been split into several interfaces: IMessageSequenceFormatter, IMessageDetailsFormatter, IMessageErrorDetailsFormatter.
    • GetMostAppropriateDetails(IEnumerable<IMessage>) is available as IMessageSequenceFormatter.GetText()
    • GetDetails(IEnumerable<IMessage>, IMessage) is available as IMessageDetailsFormatter(IEnumerable<IMessage>, IMessage)
  • IRemoteMethodsInstanceFactory has been renamed to IMetaMethodsInstanceFactory
  • IMetaMethodImplementationContainer is now in the Encodo.Quino.Methods namespace

Sign up for our Newsletter