.NET tool


If you prefer to manage your database migrations outside your application, Evolve is also available as a .NET tool. Evolve.Tool is a special NuGet package that contains a console application which requires .NET Core SDK 3.0 or later.


dotnet tool install --global Evolve.Tool
dotnet new tool-manifest
dotnet tool install Evolve.Tool

Command structure

Evolve.Tool command structure consists of a Command, a Database and a list of options.

Command (“verb”)

The command (or “verb”) is simply a command that performs an action:

  • migrate: applies the migrations.
  • erase: erases the database schema(s) if Evolve has created it or has found it empty.
  • repair: corrects checksums of already applied migrations, with the ones from actual migration scripts.
  • info: displays the details and status information about all the migrations.

The database is the name of the database management system to which the command will be applied:

  • postgresql
  • sqlite
  • sqlserver
  • mysql
  • mariadb
  • cassandra
  • cockroachdb

The options you pass on the command line are the options to the command invoked. They are the same that the one available in Evolve at the configuration section, but with more suitable names for a CLI. Below the main options:

  -?|-h|--help                 Show help information
  -c|--connection-string       The connection string to the target database engine.
  -l|--location                Paths to scan recursively for migration scripts. Default: Sql_Scripts
  -s|--schema                  A list of schemas managed by Evolve. If empty, the default schema is used.
  -p|--placeholder             Placeholders are strings to replace in scripts. Format for commandline is "key:value".
  --metadata-table             The name of the metadata table. Default: changelog
Options file

Evolve treats arguments beginning with @ as a configuraiton file that contains additional options that will be treated as if they were passed in on the command line. This feature is very useful to avoid the repetition of parameters such as the database or the connection string.


A simple example of a PostgreSQL migration:

evolve migrate postgresql -c "Server=;Database=db1;User Id=postgres;Password=postgres;" -l "C:\db\migrations" -s public -s unittest -p schema1:unittest

The same example using a configuration file called args.txt located in the current directory:

evolve migrate '@args.txt'

Content of args.txt

postgresql -c "Server=;Database=db1;User Id=postgres;Password=postgres;" -l "C:\db\migrations" -s public -s unittest -p schema1:unittest