Our speckle-sharp monorepo had been gathering some tech debt for a while, when it started we never planned to have +100 projects!
Some changes have been made to ensure we can continue to work in a consistent manner and using the latest tooling.
dev
alreadyOur monorepo consisted on one All.sln
(hardly used except for big refactors), and a set of ConnectorXXX.sln
files, one for each connector we develop. We also had a solution for Core
, DUI
and Objects
We’re going to move away from having multiple solutions in favour of a single solution and the use of solution filters. This will allow us to unify our configurations and build dependencies into one place, and ensure that we have a single source of truth on what projects exist on our repo.
All.sln
has been updated to contain absolutely every project.ConnectorXXX.sln
files, as well as any other, can be considered obsolete, and will be deleted by the end of the release cycleConnectorXXX.**slnf
** files (solution filter files) have been created in the same location as the original sln
file.SDK.slnf
was created at the root of the repo.Solution filters in MSBuild - MSBuild
Two new files have been added to the root of the repo: Directory.Build.props
and Directory.Build.targets
These files are automatically imported by every project inside our repo, and hold all the duplicated tags that were originally spread across our csproj files.
The Directory.Build.props
file is imported before any other content in your .csproj files, and contains things like company, authors, repo, copyright, license…👇🏼
The Directory.Build.targets
file is imported after any other content in your .csproj files, and contains 2 targets:
CopyToKitFolder ⇒ An action to copy a converter dll into the speckle kit folder, compatible with linux, windows and mac. Can be enabled per-project by adding the tag 👇🏼
DeepClean ⇒ An action that will completely remove all bin/
and obj/
folders in the repo.
Can be run by calling dotnet clean /p:DeepClean=true