Skip to content
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

Choose a tag to compare

@markfinal markfinal released this 06 Sep 14:21
· 13 commits to master since this 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.Init no longer requires any arguments. Other mechanisms for discovering Module parentage now exists.
  • Removed Bam.Core.ITool.CreateDefaultSettings<T>(Module) with the getter property Bam.Core.ITool.SettingsType. This simplifies package code, and centralises the Settings object construction.
  • Bam.Core.Module.InputModules renamed to InputModulePaths, and the KeyValuePair argument replaced with a (Bam.Core.Module module, string pathKey) tuple to simplify the API.
  • Virtual function Bam.Core.Settings.AssignFileLayout() has been removed. The property FileLayout has been renamed to CommandLayout, and the setter made private. Bam.Core.Settings constructor now requires an ELayout value. This enforces the invariant nature of the layout, and eliminates one (virtual) function call per Settings instance.
  • Initialisation of Settings interface properties simplified. Settings classes only require a default constructor now. Removed InitializeAllInterfaces method. Added SetModuleAndDefaultPropertyValues and AssignModule methods to Base.Core.Settings.
    Interfaces that can be delta'd (e.g. compiler interfaces used in project generator build modes) no longer require an Empty extension method. Instead, Defaults and Clone extension methods are responsible for initialising any reference properties before use.
  • Removed the Bam.Core.Module argument from the extension method Defaults for each settings interface. If the Module is needed, then the Module property on the Settings itself can be queried.
  • VisualStudio projects are associated by module type, while VS project configurations are associated to a module. Reinforced this by changing VSSolution.EnsureProjectExists to take the module type (and build environment, needed for additional data) instead of the module itself. Assigning the VSProject to a Module's MetaData property is now the responsibility of VSProject.GetConfiguration.
  • Deprecated classes and functions that generate a *Container in favour of *Collection.
  • Replaced ReadOnlyCollections with generic IEnumerable where possible (avoids allocating a new object).
  • Removed public access 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 use public access modifiers on Module derivations, and just leave the default.
  • Updated various NuGet package versions.

And many more bug fixes. See 'Changelog.txt' for details.

All changes since v2.0.0b2

Known issues

Bug list