/
Release Procedures: BCF Extensions (AgendaBuilder, PassagePlanner and CompetenceSurfer)

The BCF AgendaBuilder, PassagePlanner and CompetenceSurfer require a separate release procedure than Core. It is a manual process.

  1. Pre-requisite for the live (CA2)/liveanon installation: The Ext CSMART installation must be enabled for the BCF installation (this will make the common ext code for the BCF Extensions available).
    Note: the Ext service is not required to run but it doesn’t hurt if it does

  2. Check out the proper Core production branch on your local machine

  3. Load Core project in Visual Studio

  4. Build the solution in Release mode

  5. Preserve configuration web.config:
    Take a copy of the live web.config files for each extensions (these contain the live configuration - section <appSettings> and SQL connection string in <connectionStrings>). The configuration needs to be carried over to the new web.config.

  6. Preserve configuration bin\log4netConfig.xml:
    Take a copy of the live bin\log4NetConfig.xml files for each extensions

  7. Copy all files and directories (incl. .cs files as they don't hurt but would be a pain to manually remove) into the proper location on the server (CA2). The three project folders are:

    • src/MarineLMSExtensions.Web.BCF.AgendaBuilder

    • src/MarineLMSExtensions.Web.BCF.CompetenceSurfer

    • src/MarineLMSExtensions.Web.BCF.PassagePlanner

  8. Re-apply configuration web.config:
    Manually transfer the configuration within the original web.config files into the new web.config (<appSettings> and SQL connection string in <connectionStrings>.

  9. Re-apply configuration bin\log4netConfig.xml:
    Check if the config has changed (additional settings) and re-apply the previous configuration (i.e. <subject value="Web-Core-BCF AgendaBuilder ERROR:" /> so the emails can be differentiated and located where they are coming from

  10. Ensure that those virtual directories in IIS are pointed to the newly copied folders (Advanced Settings > Physical Path)

  11. At the end, make sure the AgendaBuilder and PassagePlanner do have the file System.Web.Razor.dll in their bin directory.
    Otherwise, the trace log files of the extensions will log an error on start-up:

    12021-02-02 15:24:47,323 [ERROR] {301} |Default| - IoCSetup::GetinstallerTypesFromAssembly[PassagePlanner] - Exception while getting types from assembly System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35 2LOADER EXCEPTIONS 3System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 4File name: 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 5 6WRN: Assembly binding logging is turned OFF. 7To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 8Note: There is some performance penalty associated with assembly bind failure logging. 9To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 10 11LoaderException: System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 12File name: 'System.Web.Razor, Version=2.0.0.

Release Issue Hints

If one of the extensions fail to load (i.e. internal error), check

  • Disable custom errors in web.config to get a more detailed error (customErrors mode="On" > "Off")

  • Check the Event Viewer > Windows Logs > Application for errors

  • Has the web.config file the proper formatting (i.e. xml tag out of place or closing xml tag missing)?

  • Has the web.config all references to dll dependencies? It is possible that the new release has some new dll references which are either missing within web.config or missing from the bin folder (check Event Viewer and error with customErrors = "Off").