Upgrading to 6.2 - Recompiling Configurations

What's needed?

If you are updating your website to 6.2 Aptify you must recompile your configurations against the 6.2 assemblies.  No code changes are needed in most scenarios.  The most common action needed is to add additional references to your projects.

Why is recompilation needed? 

As part of our internal development process to improve the product, the 6.2 release required Aptify to move some types to different assemblies.  .NET supports this as a non breaking change with Type Forwarding attributes.  Unfortunately in our testing we found that type forwarding attributes do not work in every scenario.  There were many instances where configurations would not locate the new type at run time and the application would error during type resolution.  Recompiling against the new type locations always resolves these errors.

6.2 also updates Aptify to .NET Framework 4.8.  When we previously made the move to .NET Framework 4.5, some configurations had problems that were only resolved with a recompile.  Since we know this has caused issues in the past we're recommending it here as well. 

When do I need to add additional references?

This section lists out the types that moved from one assembly to another.  If you recompile against the new assemblies and do not receive any type resolution errors you should not need to take any additional action.  If you do receive compilation errors, consult the table below to determine what types were impacted and the new assembly it resides in.  


Original AssemblyType

New Assembly

AptifyProductCostAdjustmentWizard.dllProductCostAdjustmentWizardExceptionAptifyInventoryManagement.dll
AptifyWindowControls.dllAptifyFormTemplateContextIAptifyWindowControls.dll
AptifyWindowControls.dllBoundControlCollectionIAptifyWindowControls.dll
AptifyWindowControls.dllFieldHelpIAptifyWindowControls.dll
AptifyWindowControls.dllIAptifyDataFieldControlBaseIAptifyWindowControls.dll
AptifyWindowControls.dllIAptifyControlBaseIAptifyWindowControls.dll
AptifyWindowControls.dllIDataControlIAptifyWindowControls.dll
AptifyWindowControls.dllIFormComponentIAptifyWindowControls.dll
AptifyRecordTemplate.dllTemplateObjectAptifyRecordTemplateObject.dll
AptifyViewPlugin.dllIAptifyViewPlugInIAptifyViewPlugin.dll
AptifyViewPlugin.dllIAptifyViewExtensionIAptifyViewPlugin.dll
AptifyViewPlugin.dllIAptifyViewPropertiesPlugInIAptifyViewPlugin.dll
AptifyViewPlugin.dllAptifyViewPropertiesPlugInTypeIAptifyViewPlugin.dll
AptifyViewPlugin.dllIAptifyViewExecuteNonUIIAptifyViewPlugin.dll
AptifyViewPlugin.dllViewExecutionExceptionIAptifyViewPlugin.dll
AptifyViewPlugin.dllAptifyViewUtilityIAptifyViewPlugin.dll
AptifyViewPlugin.dllViewTypeScopeIAptifyViewPlugin.dll
AptifyViewPlugin.dllViewTypeInfo

IAptifyViewPlugin.dll

AptifyExceptionManagement.dllBaseApplicationExceptionAptifyExceptionManagementInterfaces.dll
AptifyFormTemplateGUI.dllIFormComponentPropPageIAptifyFormTemplateControls.dll
AptifyLicensingManager.dllLicensingManagerConstantsILicensingManager.dll
AptifyLicensingManager.dllLicensingManagerExceptionILicensingManager.dll
AptifyLicensingManager.dllLicensingManagerInactiveAptifyUserLicenseAssignmentExceptionILicensingManager.dll
AptifyLicensingManager.dllLicensingManagerInactiveAptifyUserLicenseExceptionILicensingManager.dll
AptifyLicensingManager.dllLicensingManagerNoUserLicenseExceptionILicensingManager.dll
AptifyLicensingManager.dllLicensingManagerExceptionILicensingManager.dll
TypeResolution.dllITypeResolverITypeResolution.dll
AptifyGenericEntity.dllAptifyGEConflictWizard*AptifyGenericEntityForms.dll
AptifyGenericEntity.dllDuplicateMessageForm*AptifyGenericEntityForms.dll
AptifyGenericEntity.dllFindSubTypeRecordForm*AptifyGenericEntityForms.dll
AptifyGenericEntity.dllVersionCommentsForm*AptifyGenericEntityForms.dll

*  It was not possible to add type forwarding attributes for these changes

In general, if your project references an assembly in the 'Original Assembly' column, add a reference to the assembly in the 'New Assembly' column.  The most common assembly you will need to add is AptifyExceptionManagementInterfaces.dll.  Customers with custom smart client form templates will likely need IAptifyWindowControls.dll.  Most customers should not be affected by the other types listed in the table.  

When would I need to change code?

The only time you should need to change code as a result of Aptify moving types is if you are resolving the type through reflection.  This should be rare for the types affected.  

What about deployed applications?

Applications that are updating their bin directory to the 6.2 assemblies will need these new assemblies too.  The 6.2 core installer updates all Sync Repository Objects records to account for these changes.  If there is a Sync record referencing an assembly in the first column, an additional entry is added for the assembly in the 3rd column during the upgrade.  The Related Objects subtype on the Object Repository Objects records were not updated.  This is because of a bug in the sync process that does not account for circular references within these records.  Fixing this bug before we made the type moves was difficult, so we decided to move the types now and handle the Related Objects problem in a future update.