This repository was archived by the owner on Aug 11, 2021. It is now read-only.
v2.0.0 beta 3
Pre-release
Pre-release
Highlights of v2.0.0b3
This is the last planned beta of v2.0.0. It resolves all the issues found during the documentation pass in beta 2.
There are a number of breaking changes in this beta, which is unfortunate timing, but better to do before v2.0.0 is released.
Changes
Many of these are breaking changes.
- The signature to
Module.Initno longer requires any arguments. Other mechanisms for discoveringModuleparentage now exists. - Removed
Bam.Core.ITool.CreateDefaultSettings<T>(Module)with the getter propertyBam.Core.ITool.SettingsType. This simplifies package code, and centralises the Settings object construction. Bam.Core.Module.InputModulesrenamed toInputModulePaths, and theKeyValuePairargument replaced with a(Bam.Core.Module module, string pathKey)tuple to simplify the API.- Virtual function
Bam.Core.Settings.AssignFileLayout()has been removed. The propertyFileLayouthas been renamed toCommandLayout, and the setter made private.Bam.Core.Settingsconstructor now requires anELayoutvalue. This enforces the invariant nature of the layout, and eliminates one (virtual) function call perSettingsinstance. - Initialisation of
Settingsinterface properties simplified. Settings classes only require a default constructor now. RemovedInitializeAllInterfacesmethod. AddedSetModuleAndDefaultPropertyValuesandAssignModulemethods toBase.Core.Settings.
Interfaces that can be delta'd (e.g. compiler interfaces used in project generator build modes) no longer require anEmptyextension method. Instead,DefaultsandCloneextension methods are responsible for initialising any reference properties before use. - Removed the
Bam.Core.Moduleargument from the extension methodDefaultsfor each settings interface. If theModuleis needed, then theModuleproperty on theSettingsitself can be queried. - VisualStudio projects are associated by module type, while VS project configurations are associated to a module. Reinforced this by changing
VSSolution.EnsureProjectExiststo take the module type (and build environment, needed for additional data) instead of the module itself. Assigning theVSProjectto aModule'sMetaDataproperty is now the responsibility ofVSProject.GetConfiguration. - Deprecated classes and functions that generate a
*Containerin favour of*Collection. - Replaced
ReadOnlyCollectionswith genericIEnumerablewhere possible (avoids allocating a new object). - Removed
publicaccess modifier from classes in the standard packages folder. Since package scripts get accumulated into a single assembly at build time, the default access modifier (internal) suffices. This does mean that end-user packages should no longer usepublicaccess modifiers onModulederivations, and just leave the default. - Updated various NuGet package versions.
And many more bug fixes. See 'Changelog.txt' for details.