Skip to content
  • There are no suggestions because the search field is empty.

OPC Data Client Upgrade Process, Code Changes History by Version

I want to upgrade from an old version of OPC Data Client to the most current version.  Will this require any changes in my code?

I want to upgrade from an old version of OPC Data Client to the most current version.  Will this require any changes in my code?

Depending on which OPC Data Client version you are upgrading from, there will be different code changes necessary to make your code compatible with the latest changes (most involve simply changing Imports/using statements since the majority of changes are simply organizational). 

We have detailed all of the important changes from each version below.  For a full list of changes introduced in each version, please see the What's New document.

*Other things to consider when upgrading are your .NET Framework, Visual Studio, and Operating System version limitations.  For more information on which version of the OPC Data Client will work with your situation, please see the Specifications page or contact us with any questions.

*Please also see this FAQ on how the OPC Data Client installation process has changed between version prior to 5.32 and those after that release.

Version

Changes

2025.1 (5.82)
  • OPC UA Client
    • In the UAEndpointSelectionPolicy class, the properties related to the OPC UA communication have been factored out to the CommunicationProfile property.
  • OPC UA Server
    • Renamed IEasyUAServer.AlternateHostNames property to HostNames.
2024.2 (5.81)
  • General
    • Renamed properties in NotifyingWidget: QueueCallbacks to QueueNotifications, CallbackQueueCapacity to NotificationQueueCapacity, and CallbackQueueIdleTimeToSleep to NotificationQueueIdleTimeToSleep.
  • OPC UA
    • Turned UACodeBits static class (with list of integer constants) to an enumeration. Added implicit conversion operator from UACodeBits enumeration to UAServiceResult.
    • Renamed classes (generally by adding the word "Client", in order to achieve the necessary distinction from classes used in server development); corresponding COM interfaces have been renamed in the same way:
      • EasyUAAdaptableParameters to EasyUAClientAdaptableParameters.
      • EasyUAEngineParameters to EasyUAClientEngineParameters.
      • EasyUAInstanceParameters to EasyUAClientInstanceParameters.
      • EasyUASharedParameters to EasyUAClientSharedParameters.
      • UAEnhancedSessionParameters to UAEnhancedClientSessionParameters.
      • UASmartEngineParameters to UASmartClientEngineParameters.
      • UASmartSessionParameters to UASmartClientSessionParameters.
  • OPC UA Administration and PKI
    • The default application URI template string has changed. It now uses canonicalized host name, and "http" scheme instead or "uri". For more information, see OPC UA Application URI Derivation.
See 2024.1 Release Notes for more information.
2024.1 (5.80)
  • OPC Classic
    • Added DANodeElement.ToDANodeDescriptor and AENodeElement.ToAENodeDescriptor methods (mainly for use from COM).
  • OPC UA Administration and PKI
    • The automatically determined OPC UA application URI now uses only the major version part of the application version information, instead of the full version string. This means that all builds of the application with the same major version number are now (by default) considered to be the same OPC UA application. This results in reduced number of situations in which the OPC UA application certificate has to be re-generated. More information: OPC UA Application URI Derivation.
See 2024.1 Release Notes for more information.
2023.2 (5.72)
  • No significant changes that would affect existing code
See 2023.2 Release Notes for more information.
2023.1 (5.71)
  • OPC UA
    • The GdsEndpointDescriptor property (used in OPC UA global discovery with methods that do not specify their own GDS endpoint) has been moved from the EasyUAClient.InstanceParameters to the static EasyUAClient.SharedParameters.
  • Specialized Client Objects
    • Renamed IEasyUACertificateManagement.GetCertificateGroups method to GetCertificateGroupIds.
  • OPC UA Adminstration and PKI
    • The default lifetime of auto-generated application instance certificate is now 60 months (5 years), regardless of whether you target .NET Framework, or .NET 6+. Previously, the default was 600 months (50 years) for .NET Framework, and 12 months (1 year) otherwise.
    • The property UAClientServerApplicationParameters.AllowOwnCertificatePrompt has been renamed to AllowUserInteraction and moved to the CertificateGenerationParameters class.
    • The method IEasyUAClientServerApplication.RemoveInstanceCertificate has been renamed to RemoveOwnCertificate.
    • Set non-empty default paths for HTTPS trusted and issuer certificate stores.
    • The IEasyUAClientApplication service (interface) has been renamed to IEasyUAClientServerApplication.
    • The IEasyUAClientServerApplication.GetApplicationManifest method has been renamed to GetEffectiveApplicationManifest.
See 2023.1 Release Notes for more information.
2022.2 (5.70)
See 2022.2 Release Notes for more information.
2022.1 (5.63)
  • OPC DA
    • The ServerClass property (in ObjectDescriptor, ServerDescriptor, and OpcServerDialog classes) now contains the {CLSID} of the OPC server, if available; otherwise, it contains its ProgID (or is empty, if no ProgID present either). Previously, the ServerClass property "preferred" the ProgID before the CLSID. Use the new ServerProgram property if the previous behavior is needed.
    • Properties ExecutionContext and TurnOffActivationSecurity from EasyMachineParameters (for OPCEnum operations) and EasyClientParameters (for target OPC server operation) have been moved into a new class, ComInstantiationParameters, and a corresponding ComInstantiationParameters property has been added to the EasyMachineParameters and EasyClientParameters classes.
    • Properties UseCustomSecurity and TurnOffCallSecurity have been moved from EasyMachineParameters (for OPCEnum operations) and EasyClientParameters (for target OPC server operation) and merged into a single set of properties in a new class, ComSecurityParameters, available in the ComManagement.SecurityParameters property.
  • OPC UA
    • The ServerConditionChanged event, previously available on the IEasyUAClient interface, has been moved to a new service, IEasyUAClientConnectionMonitoring, available from the EasyUAClient component. The service is also available via COM, as _EasyUAClientConnectionMonitoring interface.
    • Types renamed: UAComplexDataPluginParameters to UAComplexDataClientPluginParameters, _UAComplexDataPluginParameters to _UAComplexDataClientPluginParameters. When retrieving the OPC UA Complex Data plugin (for OPC UA client-server model) setup from EasyUAClient.InstanceParameters.PluginSetups using the FindName method, use "UAComplexDataClient" instead of "UAComplexData".
  • OPC UA PubSub
    • The ResolverDescriptor property has been moved from the UASubscribedataSetArguments class to the UADataSetSubscriptionDescriptor class.
See 2022.1 Release Notes for more information.
2021.3 (5.62)
  • Renamed EasyXXXXConfiguration components to EasyXXXXManagement, i.e. EasyDAClientConfiguration to EasyDAClientManagement, EasyAEClientConfiguration to EasyAEClientManagement, EasyUAClientConfiguration to EasyUAClientManagement, and EasyUASubscriberConfiguration to EasyUASubscriberManagement. This is a breaking change if you use the affected components, but it can be easily resolved by simple text find&replace.
See 2021.3 Release Notes for more information.
2021.2 (5.61)
  • No significant changes that would affect existing code.
See 2021.2 Release Notes for more information.
2021.1 (5.60)
Older Versions

5.0 to 5.11

  • No significant changes that would affect existing code

5.12

  • When implementing browsing functions through code, the browsing methods will no longer return an IDictionary object, but instead a more specific collection object depending on the browsing scenario. See This FAQ for more information

5.20

  • There were new assemblies added, and some assemblies’ names have changed.

5.21

  • There were new OPC-UA assemblies added:
    • EasyOpcUAExtensions
    • EasyOpcUAForms
    • EasyOpcUAInternal
  • Various types were moved from the EasyOpcClassic assembly to EasyOpcClassicInternal.
    • It is almost always necessary to reference the assemblies ending in "Internal" in your programs because of this change.

5.22

  • The Isolated flag of EasyDAClient.ClientMode, EasyAEClient.ClientMode, and EasyUAClient.ClientMode becomes EasyDAClient.Isolated, EasyAEClient.Isolated, and EasyUAClient.Isolated.
  • The LicensingException class has been removed, and Microsoft's System.ComponentModel.LicenseException is used instead.
  • The WriteMultiple and WriteMultipleValues method of EasyUAClient now return UAWriteResult instead of OperationResult. The UAWriteResult contains additional information in case of Write success: the Clamped flag and the CompletesAsynchronously flag.
  • Added EasyUAClient.HostParameters and DiscoveryParameters properties. Moved parts (mainly discovery-related) of EasyUAEngine.EngineParameters to these new objects. Also, added corresponding EasyUAClient.IsolatedHostParameters and IsolatedDiscoveryParameters properties.
  • The SessionHoldPeriod of EasyUAClient.EngineParameters becomes a HoldPeriod of EasyUAClient.SessionParameters.
  • The PreferMessageSecurity property of the UAEndpointSelectionPolicy has been renamed to MessageSecurityPreference, and it now has three possible values: Negative (to prefer non-secure endpoints), None (to follow server-provided endpoint security level), and Positive (to prefer secure endpoints).

5.23

  • The component's parameters (for all EasyXXClient objects) are now consistently reorganized into three groups: SharedParameters (static parameters that are always shared among object instances), InstanceParameters (parameters that can always be set independently for each object instance), and AdaptableParameters (parameters that are normally shared, but can be made specific to an instance if the Isolated property is set to 'true').
  • The UAApplicationType enumeration has been renamed to UAApplicationTypes, and its internal values have changed. The enumeration is now bit-coded, allowing for better capture and detection of various combinations of OPC-UA application types.
  • In order to allow StreamInsight serialization, some property members in generic types that are based on their corresponding non-generic types have been renamed. The changes are described by the table under the "Components Core" section under "What's New in QuickOPC 5.23" of the What's New document.
  • The CertificateAcceptancePolicy has been moved from UAClientEngineParamaters to UAClientSessionParameters. As the session parameters can be made isolated and configured separately for each instance of the client component, you can now configure the certificate acceptance policy differently for each instance of the component.
  • Some classes used with the Live Mapping model have been renamed. The changes are described by the table under the "Components Core" section under "What's New in QuickOPC 5.23" of the What's New document.

5.30

  • The properties of OpcBrowseDialog (for OPC "Classic") have been grouped into Mode, Inputs, InputsOutputs, and Outputs objects.
  • The properties of UABrowseDialog (for OPC Unified Architecture) have been grouped into Mode, Inputs, InputsOutputs, and Outputs objects.

5.31

  • In relation to the multi-selection support added for OpcBrowseDialog and UABrowseDialog components, the relevant members of OpcBrowseDialog.InputsOutputs and UABrowseDialog.InputsOutputs have been moved to a new CurrentNodeDescriptor property, so that the multi-selection data can be placed into the SelectionDescriptors collection alongside it. Analogically, the relevant members of OpcBrowseDialog.Outputs and UABrowseDialog.Outputs have been moved to a new CurrentNodeElement property, so that the multi-selection data can be placed into the SelectionElements collection alongside it.
  • The ServerDescriptor (which previously contained mainly the MachineName and ServerClass properties) has been generalized to be able to describe both COM and XML based servers. The primary information in the ServerDescriptor is now its UrlString. For OPC COM servers, the URL is composed in such a way that it contains the original MachineName (now named Location) and ServerClass properties. For OPC XML servers, their URL can be used as the UrlString directly. This design makes the ServerDescriptor backwards compatible, and developers that use COM servers only do not have to make any difficult changes.
  • At some places (where both OPC COM and OPC XML are covered), the MachineName property has been renamed to Location (and can contain either the machine name or a host name, which are essentially the same thing, but a common term covering both was needed).
  • The DAItemIdTemplateAttribute.TemplateString has been renamed to ItemIdTemplate, and a new property covering a template string for the OPC XML-DA "ItemPath" has been added, named NodePathTemplateString.
  • The DAPropertyDialog now has a PropertyDescriptor property instead of a PropertyId property.
  • The overloads of EasyUAClient.DiscoverServers method that accept the "application types" argument have been renamed to DiscoverApplications, in order to better describe the actual functionality that they provide.
  • The EndpointUrlString property of the UAEndpointDescriptor has been renamed to just UrlString.
  • Renamed some UABrowsePath members: BrowsePathElements to Elements, GetLastBrowsePathElement to GetLastElement, AppendBrowsePathElement to AppendElement.
  • Renamed the IsolatedAdaptableParameters property to just IsolatedParameters.
  • Removed the DefaultIsolatedAdaptableParameters property. The isolated (adaptable) parameters are now always initialized to a constant default.
  • Some types have moved from the EasyOpcClassic assembly to the EasyOpcClassicInternal assembly. As a result, more projects will also need to reference the EasyOpcClassicInternal assembly.
  • New assemblies (do not have to be explicitly referenced, but need to be deployed together with your applications): OpcLabs.EasyOpc, OpcLabs.EasyOpcClassicNative, OpcLabs.EasyOpcClassicNetApi, OpcNetApi, OpcNetApi.Com, OpcNetApi.Xml.

5.32

  • Better organized the existing types into (newly created) namespace. Type names remained largely without change, but many types have been moved to different namespaces. Consequently, existing code may need namespace changes, or additional "using" or "Import" directives. The most important new namespaces are:
    • OpcLabs.BaseLib.OperationModel
    • OpcLabs.EasyOpc.Engine, .OperationModel
    • OpcLabs.EasyOpc.AddressSpace, .Engine, .OperationModel
    • OpcLabs.EasyOpc.AlarmsAndEvents.AddressSpace, .Engine, .OperationModel
    • OpcLabs.EasyOpc.DataAccess.AddressSpace, .Engine, .OperationModel
    • OpcLabs.EasyOpc.UA.AddressSpace, .Discovery, .Engine, .OperationModel
  • The UAUserIdentity object has been renamed to UserIdentity. The UAxxxxToken objects has been renamed to xxxxTokenInfo. All these objects have been moved to the OpcLabs.BaseLib.IdentityModel.User namespace.

5.33

  • Completely reworked the COM development support for OPC "Classic" specifications. The COM objects for OPC "Classic" are now implemented by exposing the objects written in .NET to COM. This means that the very same code runs in the COM and .NET worlds, and the API (interfaces) are either identical, or very closely similar. The Procedural Coding Model for OPC "Classic", including the User Interface objects, is exposed to COM, almost in full. The implementation strategy is now consistent with the COM support for OPC UA specifications.
    • Due to the re-implementation, the CLSIDs and ProgIDs of COM objects for OPC "Classic" have changed. For example, instead of "OPCLabs.EasyDAClient.5.2", you will now use "OpcLabs.EasyOpc.DataAccess.EasyDAClient".
    • EasyDAItemChangedEventArgs no longer directly contains the State, ServerDescriptor, ItemDescriptor, and GroupParameters properties. Instead, EasyDAItemChangedEventArgs contains an Arguments property which in turns contains the information previously available directly.
    • EasyAENotificationEventArgs no longer directly contains the State, ServerDescriptor, and SubscriptionParameters properties. Instead, EasyAENotificationEventArgs contains an Arguments property which in turns contains the information previously available directly.
    • The VarType class has been moved to the (new) OpcLabs.BaseLib.ComInterop namespace.
    • Constants from the VarType type have been moved to a new VarTypes enumeration.
    • Constants from the DAQuality type have been moved into a new DAQualities enumeration.
    • Methods DAQuality.IsBad(), IsGood(), IsUncertain() have been turned to read-only properties.
    • Method DAVtq.HasValue() has been turned to a read-only property.
    • Constants from the DAPropertyId type have been moved to a new DAPropertyIds enumeration.
    • The DAAccessRights type has been renamed to DAAccessRight. However, constants from this DAAccessRight type have been moved to a new DAAccessRights enumeration.
    • The AEEventTypes type has been renamed to AEEventType. However, constants from this AEEventType type have been moved to a new AEEventTypes enumeration.
    • The DANodeFilter type has been renamed to DABrowseParameters, the AENodeFilter type has been renamed to AEBrowseParameters.
    • The constants from the VarType class that determine the internal values of pre-defined VARTYPE-s have been moved to the (new) static VarTypes class. You therefore need to write VarTypes.Empty instead of VarType.Empty, VarTypes.I4 instead of VarType.I4, etc.
    • Renamed: AEEvent to AEEventData, EasyAENotificationEventArgs.Event to EventData, AEEventPayload to AEEventDataPayload, and AENotificationPayload.EventPayload to EventDataPayload.
    • The AEEventTypes.NoEvent enumeration member has been renamed to None. The DAAccessRights.NoAccess enumeration member has been renamed to None.
    • Type of AEAttributeDialog.AttributeIds and AECategoryDialog.CategoryIds changed from Collection<Int64> to Int64[].
    • All properties named InternalValue are now of enumeration type; all properties named NumericalValue are of integer type (except in QuickOPC-UA)

5.34

  • No significant changes that would affect existing code

5.35

  • No significant changes that would affect existing code.  Any applications using the codeless Live Binding feature should see this FAQ.

5.40 

  • No significant changes that would affect existing code.

5.41 

  • Moved all COM interface definitions (_XXXX) to ComTypes sub-namespaces, clearing up the .NET namespaces.
  • Moved BrowsePath type and related types from OpcLabs.BaseLib.Browsing to OpcLabs.BaseLib.Navigation namespace.
  • Moved UABrowsePath and related types from OpcLabs.EasyOpc.UA.AddressSpace to OpcLabs.EasyOpc.UA.Navigation namespace.
  • Moved ComputerServerDialog type from OpcLabs.BaseLib.Forms.Browsing to OpcLabs.BaseLib.Forms.Browsing.Specialized namespace.