Today we released the next version of Machine.Specifications. This release implements an important feature to move on in the future. We implemented a complete runner dependency abstraction. What does that mean? Let me take a step back.
The picture above shows the state of Machine.Specifications previous to V0.9.0. The console runner, the resharper runner, the TDnet runner and more were directly dependent upon the same Machine.Specifications version. This means when we release a new version of MSpec you actually had to use also the new version of the ReSharper, Console runner and more. This was not only for you as a user cumbersome it was also for us as the maintainers of the library. We had a massive repository with everything in it and released all as a “big chunk”. That made working, forking and all other git operations heavyweight because the repository was quite large.
The new way is different. We use the same approach as xunit V1 uses. There is a runner abstraction called runner utility. The runner utility is the stable abstraction which all runner infrastructure binds against. Using some crazy app domain marshaling and remoting magic the runner utility establishes an implicit contract with the core (Machine.Specifications) without having a direct dependency to the core and its version. This allowed us to completely seperate all the different moving parts of Machine.Specifications into seperate repository and in the future evolve the versions of those parts individually too. There is one exception though: There will be a breaking change in the runner utility and forcing you to update again eventually when we pull in the examples support.
In order to be able to use the new release you need now to install different nuget packages depending on your usage of MSpec.
- Update to the newest version of Machine.Specifications
Notice that the tools folder is missing now. - If you used the console runner then install the package Machine.Specifications.Runner.Console
There you’ll find your tools folder from the previous version - If you used the TDnet runner then install the package Machine.Specifications.Runner.TDnet
There you’ll find your tools folder from the previous version
Furthermore if you are using the ReSharper integration for MSpec we suggest to use the Extension gallery of ReSharper to install the plugin. For more information please read this article. Happy MSpecing 😉