DotNetCobble 0.3.0

dotnet tool install --global DotNetCobble --version 0.3.0
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local DotNetCobble --version 0.3.0
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=DotNetCobble&version=0.3.0
nuke :add-package DotNetCobble --version 0.3.0

A dotnet tool for cobbling together a solution file from a set of target projects that includes all of their project dependencies.

### Description
Sometimes we find ourselves working in a solution that has many projects and complicated dependency graphs when we could get better performance out of Visual Studio and third party plugins if the solution were much smaller. However, Visual Studio has the curious quirk that, while `dotnet build` is fully capable of building a project along with its dependencies, Visual Studio will fail if any project dependency isn't present in the currently loaded solution. Typically, crafting a one-off solution for a particular project to ease these pain points is time-consuming as you must first determine your entire project dependency graph for the target project (or set of projects) and then add them one-at-a-time to the solution.

DotNetCobble simplifies that by providing simple command-line tooling for creating a solution file from a target project (or folder of projects) that contains the target project(s) as well as all of their project dependencies.

This is particularly useful in an microservices environment where core foundational projects are used uniformly across many domains, allowing you to keep (or create) one large solution to perform large-scale refactorings or, if you already have that, create smaller solution files for more nimble development.

## To Install
`dotnet tool install -g DotNetCobble`

## To Uninstall
`dotnet tool uninstall -g DotNetCobble`

## Usage
### Creating a Solution From a Single Project
`dotnet cobble project -p C:\Path\To\Project.csproj`

In this case, DotNetCobble will do the following:
* Create a solution named `MagicSolution.sln` in the current directory.
* Add the target project to the solution, at the root of the solution.
* Recursively scan the dependencies of each project the target project depends on.
* Add all of the target project's dependencies to the solution under a solution folder named `Dependencies`.

##### Creating a Solution From Multiple Projects
`dotnet cobble folder -t C:\Path\To\SomeFolder`

In this case, DotNetCobble will do the following:
* Create a solution named `MagicSolution.sln` in the current directory.
* Scan the target folder for `.csproj` files, including nested directories.
* Add all of the located `.csproj` files the solution, at the root of the solution.
* Recursively scan the dependencies of each project the target projects depends on.
* Add all of the target projects' dependencies to the solution under a solution folder named `Dependencies`.

##### Help
Executing `dotnet cobble`, `dotnet cobble project` or `dotnet cobble folder` with no arguments will provide additional help.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.1 is compatible.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
0.3.0 656 12/4/2019
0.2.1 494 12/4/2019
0.2.0 505 12/4/2019
0.1.0 817 9/8/2018

This first release has several limitations, among them:
* It can only operate on `.csproj` files.
* You cannot control the filename of the solution file that gets created (you can rename it afterwards, though).
* You cannot control the behavior around solution folders or manipulate the solution structure as part of the tool.