SlnGen is a Visual Studio solution file generator. Visual Studio solutions generally do not scale well for large project trees. They are scoped views of a set of projects. Enterprise-level builds use custom logic like traversal to convey how they should be built by a hosted build environment. Maintaining Visual Studio solutions becomes hard because you have to keep them in sync with the other build logic. Instead, SlnGen reads the project references of a given project to create a Visual Studio solution on demand. For example, you can run it against a unit test project and be presented with a Visual Studio solution containing the unit test project and all of its project references. You can also run SlnGen against a traversal project in a rooted folder to open a Visual Studio solution containing that view of your project tree.
To install SlnGen, run the following command:
dotnet tool install --global Microsoft.VisualStudio.SlnGen.Tool --add-source https://api.nuget.org/v3/index.json --ignore-failed-sources
Once installed, .NET Core will add slngen
to your PATH so you can run it from any command window:
slngen --help
More documentation is available at https://microsoft.github.io/slngen/.
The MSBuild target must be installed as a NuGet package and restored. This can slow down the process so a .NET Core tool might be preferable.
Install the package to an individual project (not recommended):
Install-Package Microsoft.VisualStudio.SlnGen
Or add it your Directory.Build.props:
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.SlnGen" Version="<Latest Version>" />
</ItemGroup>
Generate and open a Visual Studio solution with MSBuild:
> MSBuild /Restore /t:SlnGen
You can also create a DOSKEY alias as a shortcut
> doskey slngen=msbuild /nologo /v:m /t:slngen
More documentation is available at https://microsoft.github.io/slngen/.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.