Feedback
Did this article resolve your question/issue?

   

Article

Keeping external assemblies up to date with Sitefinity version

« Go Back

Information

 
TitleKeeping external assemblies up to date with Sitefinity version
URL NameKeeping-external-assemblies-up-to-date-with-Sitefinity-version
Article Number000112714
EnvironmentProduct: Sitefinity
Version: All Supported Versions
OS: All supported OS versions
Database: All supported Microsoft SQL Server versions
Question/Problem Description
How to keep project dependencies up to date?
How to maintain external assemblies after an upgrade ?
How to upgrade external DLLs? 
How to make DLLs which depend on old version of Sitefinity run with a newer version ? 
Steps to Reproduce
Clarifying Information
If the versions of Sitefinity and the external assembly dependencies are not equal, there will be an error on startup.
Addon projects are compiled into external assemblies.
Error Message[FileLoadException: Could not load file or assembly 'Telerik.Sitefinity, Version=10.1.6501.0, Culture=neutral, PublicKeyToken=b28c218413bdf563' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
Upon startup after upgrade.
Defect Number
Enhancement Number
Cause
Resolution
Since the addon project is built to work with specific Sitefinity version - for example, 10.1, it should only run with this specific version. 

The recommended approach is to keep addon's references up to date with the specific version of the project(s) which is going to use it. 

In case there are different Sitefinity clients versions, then they need to be kept with different versions of the custom addon which needs to correspond to Sitefinity's versions.

This is how the different Sitefinity's components are built. For example whenever the Telerik.Sitefinity version is upgraded, then Telerik.Sitefinity.Frontend also needs to be built to correspond to the version.
Sitefinity's Nuget Repositories would keep different versions of each of those different packages which work together. This would then facilitate the distribution of this packages.

The recommended approach is to upgrade the Sitefinity's nuget packages of the custom project while upgrading Sitefinity itself. 
Workaround
Include a binding redirect in the Sitefinity's web.config. For example:
<dependentAssembly>
<assemblyIdentity name="Telerik.Sitefinity" publicKeyToken="b28c218413bdf563" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.2.6600.0" newVersion="10.2.6600.0" />
</dependentAssembly>
This needs to be done for all the dependent assemblies. 

This setting will try to redirect an old dependency to the new version of Sitefinity. However, using this approach one would have to closely monitor for any compatibility issues - API changes, file namings, etc, which can cause a runtime error, but it is not recommended since it might create inconsistencies. 
Notes
Last Modified Date2/7/2018 12:39 PM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.