The BCF AgendaBuilder, PassagePlanner and CompetenceSurfer require a separate release procedure than Core. It is a manual process.
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 doesCheck out the proper Core production branch on your local machine
Load Core project in Visual Studio
Build the solution in Release mode
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.Preserve configuration bin\log4netConfig.xml:
Take a copy of the live bin\log4NetConfig.xml files for each extensionsCopy 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
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>.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 fromEnsure that those virtual directories in IIS are pointed to the newly copied folders (Advanced Settings > Physical Path)
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:2021-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 LOADER EXCEPTIONS 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. File name: 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. LoaderException: 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. File 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").