slnutil 3.0.1
dotnet tool install --global slnutil --version 3.0.1
dotnet new tool-manifest
dotnet tool install --local slnutil --version 3.0.1
#tool dotnet:?package=slnutil&version=3.0.1
nuke :add-package slnutil --version 3.0.1
slnutil
A collection of utilities for working with .NET Solutions and Projects (.sln and .slnx).
Written by Benjamin Day
Pluralsight Author | Microsoft MVP
https://www.benday.com
https://www.honestcheetah.com
info@benday.com
YouTube: https://www.youtube.com/@_benday
Key features
- Create solutions and projects with unit tests & integration tests for...
- ASP.NET Web API Projects with xUnit
- ASP.NET MVC Projects with xUnit
- .NET MAUI Projects with xUnit & the .NET MAUI Community Toolkit
- .NET MAUI Projects with sample application, viewmodels, and xunit tests. This uses the Benday.Presentation.Controls & Benday.Presentation libraries.
- .NET Core Console application
- Commands Utility application using Benday.CommandsFramework. This helps you to quickly write CLI utilities that run as a dotnet tool.
- Create class diagrams for all or part of a project using Mermaid
- Update the .NET Framework version for all projects in a solution
- Set or increment the assembly version for a project
- Set a project property value in a csproj file
- Deploy Entity Framework Core Migrations from a DLL (aka. deploy migrations without the source code)
- Validate a connection string against SQL Server to make sure it connects
- Bulk rename files and folders
- Edit json from the command line
- Set the connection string in appsettings.json from the command line
- Generate C# classes from JSON
- Run SQL commands or script files against SQL Server
- Check and update versions in Bicep files
- Format XML files (single file or recursive)
- View assembly information
- And lots more...
Suggestions, Problems, or Bugs?
Got ideas for utilities you'd like to see? Found a bug? Let us know by submitting an issue https://github.com/benday-inc/slnutil/issues. Want to contribute? Submit a pull request.
Installing
The slnutil is distributed as a .NET Core Tool via NuGet. To install it go to the command prompt and type
dotnet tool install slnutil -g
Command line syntax
Arguments are typed in the POSIX long option form that git, docker and the dotnet CLI use:
slnutil setprojectproperty --propertyname Nullable --propertyvalue enable
slnutil setprojectproperty --propertyname=Nullable --propertyvalue=enable
slnutil formatxml --filename app.config --write
A boolean argument is a flag and takes no value. The older /name:value form still works but
is deprecated -- it prints a warning on stderr and will be removed in a future version.
Run slnutil for the command list, slnutil <command> --help for a command's arguments, or
slnutil tui for a terminal interface that lets you browse the commands, fill in a form, and
run it.
A command that fails exits with a non-zero exit code, so slnutil can be used in a script or a build pipeline step.
Commands
| Command Name | Description |
|---|---|
| assemblyinfo | View assembly info for a DLL. |
| rename | Bulk rename for files and folders. |
| classdiagram | Generate a class diagram for an assembly. |
| cleanreferences | Simplifies package references in a C# project file. Mostly this fixes stuff in the EF Core references that breaks Azure DevOps & GitHub builds like PrivateAssets and IncludeAssets directives. |
| createsolution | Create a solution and projects |
| deployefmigrations | Deploy EF Core Migrations from DLL binaries. |
| devtreeclean | Clean development folder tree. Removes node_modules, .git, bin, obj, and TestResults folders. |
| enablecodeanalysis | Enable Roslyn code analysis across a solution. Default mode creates/merges Directory.Build.props at the solution root. Use --per-project to install analyzers directly into each csproj (required for packages.config projects). |
| findsolutions | Find solution files (sln and slnx) in a folder tree and optionally list projects with reference analysis. |
| formatjson | Formats JSON files |
| formatxml | Formats XML files |
| getconnectionstring | Get database connection string in appsettings.json. |
| classesfromjson | Create C# classes from JSON with serialization attributes for System.Text.Json. |
| listpackages-oldstyle | Lists packages referenced in legacy style packages.config files. |
| listsolutionprojects | Gets list of projects in a solution. |
| printfile | Reads a text file and prints it to the console character by character. This is helpful for diagnosing encoding issues and weird text issues. |
| replacetoken | Replace token in file. |
| runsql | Execute SQL command or SQL script file against a database. |
| setconnectionstring | Set database connection string in appsettings.json. |
| setframework | Set the target framework version on all projects. |
| setjsonvalue | Set a string value in a json file. |
| setpackageversion | Changes NuGet package references in a C# project file to a new value. |
| setprojectproperty | Set a project property value on all projects. |
| setprojectversion | Set the assembly and nuget package version property value on a project. |
| sortpropertygroup | Sorts the elements in a property group for a csproj file. |
| sortreferences | Sorts the references in an item group for a csproj file. |
| base64 | Encodes a string value as a base 64 string. |
| touch | Modifies a file's date to current date time or creates a new empty file if it doesn't exist. |
| updatebicepversions | Reads bicep file or files and updates the api versions to latest. |
| updategithubactionsversions | Reads a GitHub Actions YAML file and updates the action versions to latest. |
| validateconnectionstring | Validate that specified connection string can connect to SQL Server. |
| wildcardreference | Changes package references in a C# project file to use wildcard version rather than fixed version number. |
| snippetize | Reads a block of text from the clipboard and formats it for use in a VSCode snippet. |
assemblyinfo
View assembly info for a DLL.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Required | String | Assembly to view |
rename
Bulk rename for files and folders.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| rootdir | Optional | String | Starting directory for the rename operation |
| from | Required | String | String to search for and replace |
| to | Required | String | Replacement value |
| prefix | Optional | String | Prefix all matching values with this value |
| preview | Optional | Boolean | Preview changes |
| recursive | Optional | Boolean | Recurse the directory tree |
classdiagram
Generate a class diagram for an assembly.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| namespace | Optional | String | Filter by namespace |
| filename | Required | String | Path to assembly that you want a class diagram for. |
| hideinheritance | Optional | Boolean | Hide inheritance relationships. |
| typenamesmatchexact | Optional | Boolean | Exact match for type names. Default is contains. |
| localonly | Optional | Boolean | Only show methods and properties that are declared locally. Don't show inherited members. |
| typenames | Optional | String | Show types that exist in this comma separated list. Default search is contains match that matches by substring. |
cleanreferences
Simplifies package references in a C# project file. Mostly this fixes stuff in the EF Core references that breaks Azure DevOps & GitHub builds like PrivateAssets and IncludeAssets directives.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution file to use |
| preview | Optional | Boolean | Preview changes only |
createsolution
Create a solution and projects
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| rootdir | Optional | String | Starting directory. If not supplied, the tool uses the current directory. |
| type | Required | String | Type of solution to create. Valid values are: webapi, mvc, console, commands, maui, maui-demo |
| namespace | Required | String | This is the root namespace for the solution. For example: Benday.SampleApp |
| verbose | Optional | Boolean | verbose |
deployefmigrations
Deploy EF Core Migrations from DLL binaries.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| binariesdir | Optional | String | Path to EF Core migration binaries. Defaults to current directory. |
| startupdll | Optional | String | Path to EF Core startup DLL. |
| migrationsdll | Optional | String | Path to EF Core migrations DLL. |
| dbcontextname | Optional | String | Name of the EF Core DbContext class. |
| namespace | Optional | String | Root namespace of the EF Core migrations DLL. |
| verbose | Optional | Boolean | Output results as comma-separated values |
devtreeclean
Clean development folder tree. Removes node_modules, .git, bin, obj, and TestResults folders.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| rootdir | Optional | String | Starting directory. If not supplied, the tool uses the current directory. |
| keepgit | Optional | Boolean | If true, skips delete of .git folders and preserves any git repositories. Default value is true. Set this value to false to delete .git folders. |
| keepnodemodules | Optional | Boolean | If true, skips delete of node_modules folders. Default value is false. |
enablecodeanalysis
Enable Roslyn code analysis across a solution. Default mode creates/merges Directory.Build.props at the solution root. Use --per-project to install analyzers directly into each csproj (required for packages.config projects).
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution to update. If omitted, searches the current directory for a .sln or .slnx file. |
| analysis-level | Optional | String | Value for the AnalysisLevel MSBuild property. Default 'latest-Recommended' surfaces meaningful diagnostics out-of-the-box. Use 'latest-Minimum' to start very quiet, or 'latest-All' / 'latest' for maximum coverage. |
| analyzer-version | Optional | String | Version of Microsoft.CodeAnalysis.NetAnalyzers to reference for .NET Framework projects. If omitted, queries nuget.org for the latest stable version. |
| codestyle-version | Optional | String | Version of Microsoft.CodeAnalysis.CSharp.CodeStyle to reference for .NET Framework projects (when --enforce-code-style is enabled). If omitted, queries nuget.org for the latest stable version. |
| enforce-code-style | Optional | Boolean | Enable code style enforcement (IDE* rules) during build. For .NET 5+ sets EnforceCodeStyleInBuild=true. For .NET Framework installs Microsoft.CodeAnalysis.CSharp.CodeStyle. Default: true. |
| dry-run | Optional | Boolean | Preview what would change without writing any files. |
| create-editorconfig | Optional | Boolean | Also create a starter .editorconfig at the solution root if one doesn't already exist. |
| per-project | Optional | Boolean | Install analyzers into each project individually (modifies csproj + packages.config) instead of using Directory.Build.props. Required for solutions where projects use packages.config. |
| lang-version | Optional | String | If set, writes <LangVersion> to each project (e.g. '9.0', 'latest'). Unblocks IDE rules whose remedy needs newer C# syntax (e.g. IDE0062 needs C# 8+). Leave unset to keep the compiler default. |
| keep-existing-rulesets | Optional | Boolean | By default this command removes any <CodeAnalysisRuleSet> elements from each csproj because they typically silence Roslyn analyzers (e.g. the VS-scaffolded MinimumRecommendedRules.ruleset). Pass this flag to leave them in place. |
findsolutions
Find solution files (sln and slnx) in a folder tree and optionally list projects with reference analysis.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| rootdir | Optional | String | Path to start search from. Defaults to current directory. |
| listprojects | Optional | Boolean | List projects in solutions |
| csv | Optional | Boolean | Output results as comma-separated values |
| json | Optional | Boolean | Output results as JSON |
| skipreferences | Optional | Boolean | Skip checking project references when listing projects in solutions |
formatjson
Formats JSON files
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to file or wildcard to files |
| recursive | Optional | Boolean | Apply to matching files recursively |
| write | Optional | Boolean | Write changes back to the file |
formatxml
Formats XML files
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to file or wildcard to files |
| recursive | Optional | Boolean | Apply to matching files recursively |
| write | Optional | Boolean | Write changes back to the file |
getconnectionstring
Get database connection string in appsettings.json.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to json config file |
| name | Required | String | Name of the connection string to get |
classesfromjson
Create C# classes from JSON with serialization attributes for System.Text.Json.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Optional: file source for the JSON to convert to C# classes. |
| clipboard | Optional | Boolean | Optional: read JSON from clipboard instead of a file or console input. |
| innerclasses | Optional | Boolean | Optional: generate inner classes for nested JSON objects. |
listpackages-oldstyle
Lists packages referenced in legacy style packages.config files.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| rootdir | Optional | String | Path to start search from |
listsolutionprojects
Gets list of projects in a solution.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution to examine. If this value is not supplied, the tool searches for a sln file automatically. |
| pathonly | Optional | Boolean | Only show the project paths. Don't show the framework versions. |
printfile
Reads a text file and prints it to the console character by character. This is helpful for diagnosing encoding issues and weird text issues.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| input | Required | String | Path to the text file to read and print. |
replacetoken
Replace token in file.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Required | String | Path to file |
| token | Required | String | Token to replace |
| value | Required | String | String value to set |
runsql
Execute SQL command or SQL script file against a database.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| connectionstring | Required | String | Connection string to the database |
| query | Optional | String | SQL query to execute |
| sqlfile | Optional | String | Path to SQL file to execute |
| display | Optional | Boolean | Display results of query (for SELECT statements) |
setconnectionstring
Set database connection string in appsettings.json.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to json config file |
| name | Required | String | Name of the connection string to set |
| value | Required | String | Connection string value |
setframework
Set the target framework version on all projects.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution to examine. If this value is not supplied, the tool searches for a sln file automatically. |
| version | Required | String | Framework version to set projects to. |
setjsonvalue
Set a string value in a json file.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to json config file |
| level1 | Required | String | First level json property name to set |
| level2 | Optional | String | Second level json property name to set |
| level3 | Optional | String | Third level json property name to set |
| level4 | Optional | String | Fourth level json property name to set |
| value | Optional | String | String value to set |
| increment-int | Optional | Boolean | Increment the existing value or use the '/value' as the value if it does not exist or isn't an integer. |
| increment-minor-version | Optional | Boolean | Increment the minor version of the existing value or use the '/value' as the value if it does not exist or isn't an integer. |
| increment-patch-version | Optional | Boolean | Increment the patch version of the existing value or use the '/value' as the value if it does not exist or isn't an integer. |
| bool | Optional | Boolean | Set value into the json as boolean |
setpackageversion
Changes NuGet package references in a C# project file to a new value.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution file to use |
| preview | Optional | Boolean | Preview changes only |
| filter | Optional | String | Filter package by name. If package name starts with this value, it gets updated. |
| version | Required | String | Package version to reference |
setprojectproperty
Set a project property value on all projects.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution to examine. If this value is not supplied, the tool searches for a sln file automatically. |
| propertyname | Required | String | Name of the property to set. |
| propertyvalue | Required | String | Value for the property. |
setprojectversion
Set the assembly and nuget package version property value on a project.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution to examine. If this value is not supplied, the tool searches for a sln file automatically. |
| project | Required | String | Project name to update. |
| increment | Optional | Boolean | Increment the minor value. |
| value | Optional | String | Value for the property. |
sortpropertygroup
Sorts the elements in a property group for a csproj file.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| project | Optional | String | Project file to edit. If this value is not supplied, the tool looks for a csproj file in the current directory. |
sortreferences
Sorts the references in an item group for a csproj file.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| project | Optional | String | Project file to edit. If this value is not supplied, the tool looks for a csproj file in the current directory. |
base64
Encodes a string value as a base 64 string.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| value | Required | String | Value to encode as base64 |
touch
Modifies a file's date to current date time or creates a new empty file if it doesn't exist.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Required | String | Path to file |
updatebicepversions
Reads bicep file or files and updates the api versions to latest.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Name of the bicep file, if you want to update just one file. |
| previewversions | Optional | Boolean | Allow preview versions for resources. |
| preview | Optional | Boolean | Do not save changes only preview the changes. |
updategithubactionsversions
Reads a GitHub Actions YAML file and updates the action versions to latest.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Name of the GitHub Actions YAML file to update. |
validateconnectionstring
Validate that specified connection string can connect to SQL Server.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| filename | Optional | String | Path to json config file |
| name | Required | String | Name of the connection string to validate |
wildcardreference
Changes package references in a C# project file to use wildcard version rather than fixed version number.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|---|---|---|
| solutionpath | Optional | String | Solution file to use |
| preview | Optional | Boolean | Preview changes only |
| filter | Required | String | Filter package by name. If package name starts with this value, it gets updated. |
snippetize
Reads a block of text from the clipboard and formats it for use in a VSCode snippet.
Arguments
| Argument | Is Optional | Data Type | Description |
|---|
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.1 | 37 | 9/9/2026 |
| 3.0.0 | 46 | 9/8/2026 |
| 2.41.1 | 139 | 8/15/2026 |
| 2.41.0 | 129 | 7/17/2026 |
| 2.40.0 | 157 | 5/19/2026 |
| 2.38.0 | 146 | 5/18/2026 |
| 2.37.0 | 182 | 4/10/2026 |
| 2.35.1 | 207 | 3/5/2026 |
| 2.35.0 | 158 | 3/4/2026 |
| 2.33.0 | 199 | 1/20/2026 |
| 2.32.1 | 363 | 12/17/2025 |
| 2.32.0 | 343 | 12/17/2025 |
| 2.31.0 | 287 | 11/4/2025 |
| 2.30.0 | 288 | 11/3/2025 |
| 2.29.0 | 300 | 10/2/2025 |
| 2.28.0 | 360 | 9/4/2025 |
| 2.27.0 | 277 | 9/4/2025 |
| 2.26.0 | 623 | 7/21/2025 |
| 2.25.0 | 484 | 6/11/2025 |
| 2.24.0 | 345 | 5/16/2025 |
v3.0.1 - findsolutions: fixed the --json option. The command handed the analysis objects to the serializer directly and those hold FileInfo and DirectoryInfo values. DirectoryInfo exposes Parent and Root as more DirectoryInfo instances and a root directory is its own Root, so the serializer walked that chain until it reported an object cycle. Every property it touched on the way was a filesystem call, which is why it ran for a long time before failing. Results are now projected onto plain classes that hold paths as strings; findsolutions: --json is no longer ignored when --listprojects is not supplied; findsolutions: fixed the table output for a project that has no references. The row was built with the twelve CSV columns no matter which format was being written, so the table formatter rejected it with "Expected 5 columns but received 12 columns". With --skipreferences this affected every project, so that combination could never run;
v3.0 - BREAKING. Upgraded to Benday.CommandsFramework v5. slnutil now returns a real exit code: a failed command exits 1 rather than the 0 that every run reported before, so a script or pipeline step that runs slnutil will start seeing failures it previously ignored; Arguments are now typed in the POSIX long option form -- '--name value', '--name=value', '--name:value' and '--flag' -- which is what usage output, shell completion and validation messages render. The original '/name:value' form still parses and prints a deprecation warning on stderr; Unknown arguments are now a validation failure rather than being ignored, so a misspelled argument name stops the command instead of silently going missing; Added the 'tui' terminal interface -- run 'slnutil tui' to browse the commands, fill in a form, copy the command line it adds up to, and run it; runsql now enforces 'exactly one of sqlcommand or sqlfile' as a declared argument rule, so the requirement appears in usage output and in the --json schema; The --json schema is now an object with SchemaVersion rather than a bare array of commands; createsolution's 'commands' template now generates a v5 tool;
v2.41.1 - findsolutions: fixed cross-solution reference detection. Relative paths written with backslashes were not resolved when running on macOS or Linux, and containment was compared without a directory boundary so a sibling folder sharing a name prefix read as being inside its neighbour. Both made outside-of-solution-root report false when it should have reported true;
v2.41 - Refactored FindSolutions command to default to table formatted output when list projects is requested;
v2.40 - enablecodeanalysis: also installs Microsoft.CodeAnalysis.CSharp.CodeStyle for IDE rule enforcement (default on; opt out with /enforce-code-style:false); added /codestyle-version to pin the package version;
v2.39 - findsolutions: added target-framework and uses-packages-config columns plus finer-grained reference-type classification (framework-ref, nuget-via-packages-config, fixed PackageReference detection); Added enablecodeanalysis command to streamline VS2026 code
analysis across a solution, with a per-project mode for packages.config solutions;
v2.38 - Fixing bugs in findsolutions command; Updating createsolution to create modern xunit projects;
v2.37 - Added updategithubactionsversions command to update GitHub Actions versions in workflow files;
v2.36 - Added formatjson command to format JSON files;
v2.35 - Added 'gui' support to launch a blazor UI for this command; Updated dependencies and minor bug fixes;
v2.34 - Modified find solutions command to also find .slnx files;
v2.33 - Modified SetJsonValueCommand to allow incrementing patch version numbers;
v2.32.1 - Updated dependencies to fix security vulnerabilities;
v2.32 - Added support for .net10; Added support for slnx files; Modified create solution command to no longer install FluentAssertions library;
v2.31 - Modified classes from json command to 1) detect DateTime property values 2) optionally generate inner classes instead of separate classes;
v2.30 - Added clipboard option to classes from json command to read JSON from clipboard instead of a file or console input;
v2.29 - Added printfile command to read a text file and print it to the console character by character. This is helpful for diagnosing encoding issues and weird text issues.;
v2.28 - Adding run sql command to execute SQL commands or SQL script files against a SQL Server database;
v2.27 - Adding support for json comments to JsonToClasses command;
v2.26 - Added command to sort references in a csproj file.
v2.25 - Added utility to check versions in bicep files and update to latest.
v2.24 - Added option to devtreeclean to preserve node_modules directories.
v2.23 - Added command to sort the values in the first PropertyGroup of a csproj file; Fixing bugs related to Process.Start() timeouts and stream reading in CreateSolutionCommand.
v2.22 - Added set package version command to update NuGet package versions in project files using optional package name filtering.
v2.21 - Modified set framework version command to more gracefully handle OS-specific targeting. Adding net8.0 and net9.0 to target frameworks.
v2.20 - Added prefix option to bulk rename command
v2.19 - Bug fixes; Support in class diagram for protected members; Class diagram option for showing locally defined members
v2.18 - Fixing bugs in formatxml command
v2.17 - Fixing bugs in class diagram generator
v2.16 - Restored the devtreeclean command which had been accidentally removed.
v2.15 - You don't wanna know. It was a mess.
v2.14 - Generate class diagrams for an assembly.
v2.13 - Added xml formatter command that allows recursive file processing.
v2.12 - Command to update or increment package version number and assembly version number.
v2.11 - Added support for setting values as json boolean in via setjsonvalue.
v2.10 - Fixed bug in setprojectproperty command where values were not updated if the property already existed.
v2.9 - Added assembly info viewer.
v2.8 - Added option to devtreeclean to keep git repositories when cleaning a directory tree.
v2.7 - Added wildcard reference command.
v2.6 - Updated nuget package to include Benday.CommandsFramework v3.2.0.
v2.5 - Updated jsontoclasses to add support for hyphens in json property names.