What's new in QuickOPC 2021.1

From OPC Labs Knowledge Base
Revision as of 20:55, 20 January 2021 by User (talk | contribs) (→‎Packaging)
Jump to navigation Jump to search

See also: Versions; Previous version: What's new in QuickOPC 2020.3

Internal version number: 5.60

Key changes:


  • In .NET Framework, there is now a dependency on various assemblies from Microsoft Platform Extensions. These assemblies are also installed into the Assemblies/net47 folder. QuickOPC NuGet packages properly reference the corresponding Microsoft Platform Extensions NuGet packages (they do not contain the individual referenced assemblies). This increases the number of files you need to deploy. [1]
  • Assemblies that are only used internally are no longer embedded inside the QuickOPC assemblies (this mechanism was used under .NET Framework to reduce the number of files that need to be deployed).[1]

Note: When upgrading from earlier QuickOPC versions, you may have to add a reference to Microsoft.Extensions.Configuration.Abstractions and possibly also Microsoft.Extensions.DependencyInjection.Abstractions assembly (both available under Assemblies\net47 under the product installation directory) to your project. Affected are projects where the QuickOPC components have been instantiated by a code generated by Visual Studio designer, e.g. Windows Forms projects where you have placed some QuickOPC components from the VS Toolbox onto the design area.

Component Improvements

OPC Alarms&Events

  • It is now possible to specify AEBrowseFilter.All in browse parameters passed to IEasyAEClient.BrowseNodes, which allows you to obtain both sources and areas in one call.

OPC UA Client-Server

  • The new OPC-UA Optimizer plugin improves performance of certain OPC UA operations. It is enabled by default.
  • Calls to OPC UA Browse, Read and Write and GetProperty operations that contain identical (except for the State property) arguments are now merged to perform just a operation (request merging). This behavior can be turned off in the OPC-UA Optimizer plugin parameters.


  • Added RemoveInstanceCertificate method to IEasyUAClientApplication service.

Component Refactorings

OPC Classic

  • Boxing of client-side OPC proxies/stubs is now also available in .NET Core (on Windows), not just in .NET Framework. This means that if your .NET Core application is using OPC Classic, it does not require "OPC Core Components" as a prerequisite.
  • Further aligned the details of behavior between the native and NET API implementations of OPC DA client, especially in the browsing methods.

OPC Alarms&Events

  • Added overloads with more combinations of parameters to IEasyAEClientExtension.SubscribeEvents, and toAEEventsSubscriptionArguments and AESubscriptionFilter constructors.


  • Certificate obtained from GDS is now also stored into the trusted peers certificate store.
  • Improved exceptions from the global discovery client by wrapping them and adding a text explaining which operation has failed, and its main parameters.

User Interface

Windows Forms Dialogs

  • Added ClientSelector property to DAItemDialog and DAPropertyDialog classes. This property allows the developer to set the parameters of the EasyDAClient object used to perform the browsing operations of the dialog.

Configuration and Instrumentation

  • High-level Built-in Component Configuration: You can set parameters of QuickOPC components externally (using e.g. environment variables, or appsettings.json files), and your software does not have to be prepared upfront.
  • High-level programmatic component configuration: You can instantiate the components while passing them a configuration to use.
  • Configuration of diagnostics switches and trace sources is now also possible using the XML ".config" file in .NET Core.
  • Migrated most event tracing to the new event source mechanism, allowing finer control of the tracing and more distinguished contents in the traces.

Tools and Online Services

OpcCmd Utility

  • Added commands that allow operations on the (read-only) PubSub configuration.
  • Added commands that allow operations on the (read-only) PubSub security key service.
  • Added aeClient command, providing access to OPC A&E functionality. Available subcommands are browseNodes, browseServers, getConditionState, subscribeEvents, queryEventCategories and querySourceConditions.
  • Added ability to obtain browse results as a tree (with --tree|-t command option).
  • Made OpcCmd utility available as ClickOnce application (in addition to existing formats).
  • Structured values are, by default, outputted with a formatted dump of their properties.
  • Sequences are now outputted as formatted, colorized tables.
  • Added commands and options to allow influencing how values, sequences and forests are displayed.
  • Improved usage examples in the utility.
  • Added ua nodeId and ua qualifiedName commands, with ability to look up standard names, and print out tables of standard OPC UA node IDs and qualified names.
  • Added daClient browseAccessPaths command.
  • Added commands that allow to interrogate the PubSub configuration model in the server.
  • Added ... getService licenseInfoProvider command, with licenseInfo? subcommand, for displaying license information.
  • Made OpcCmd option values case insensitive by default, and allowed the case sensitivity be controlled by using the property Options.CaseSensitive.
  • Allowed enumerated names (in arguments and options) be abbreviated to an unambiguous prefix, shortening the command if the user prefers that. Whether abbreviations are allowed can be controlled by using the property Options.Abbreviations.
  • Added command (events?, shortened: ev?) to show the events collected during the last command.
  • Added command (result?, shortened: r?) to show the result of the last command.
  • Added possibility to browse sequences element by element, controlled by the keyboard.
  • Added commands (under !diagnostics switches) to view the trace switches and obtain and modify their values (names?, infos?, getInfo, getValue, setValue subcommands).
  • Added commands to display (!diagnostics trace entries?) and clear (!diagnostics trace clear) the trace entries collected by the program.
  • Added standard subcommand to display trace entries collection during the last command (traceEntries?, shortened: te?).
  • Added command to replay the collected trace to a selected listener (!diagnostics trace entries? replayTo).
  • Added commands (under !diagnostics sources) to view the trace sources and obtain and modify their associated values (names?, infos?, getInfo, getSwitchValue, setSwitchValue subcommands).
  • In interactive mode, the console window is now automatically resized to a larger size. Added options to control the minimum window height and width.
  • More colorized output.
  • Added ability to configure the component parameters for OpcCmd externally, using environment variables, JSON files, INI files or XML files.

Connectivity Explorer

  • Added "Remove Instance Certificate" command (on the "OPC Unified Architecture" connectivity node).

  1. 1.0 1.1 Until this version, we have attempted to keep the number of product assemblies, and referenced assemblies that are not part of the shared framework, to minimum. We tried hard, but it was not really feasible to keep following this principle, if we wanted to move the product forward. We understand that deploying a larger number of assemblies can be a nuisance for some users, but believe us, we have not taken the decision lightly.