.NET CLI Integration
- 6 minutes to read
You can use the .NET command line interface (CLI) to create XAF ASP.NET Core Blazor, Web API Service, and Windows Forms applications from the console (without using XAF’s Solution Wizard and DevExpress Unified Component Installer). It is equivalent to Solution Wizard for .NET Core, but you can use it on any platform. This functionality is valuable for XAF developers who use Microsoft Visual Studio Code (VS Code) or JetBrains Rider in both Windows and non-Windows development environments (like Linux or MacOS).
This topic describes how to:
- Install the DevExpress XAF Templates to create an XAF project from CLI.
- Register the NuGet feed to access the required NuGet packages.
- Create an XAF application.
Step 1. Install DevExpress XAF Templates
Download the DevExpress.XAF.ProjectTemplates NuGet package and install it. The package is available to everyone at https://www.nuget.org. Users with Universal subscription can find the package in their personal feed at https://nuget.devexpress.com.
dotnet new install DevExpress.XAF.ProjectTemplates
You can run the command below to see the list of available template options. These options are also described in detail in this article.
dotnet new dx.xaf -h
Step 2. Obtain Your NuGet Feed Credentials
You need to obtain your personal NuGet feed credentials to access the DevExpress.ExpressApp NuGet packages from your project. You can use NuGet feed URL or feed authorization key to manage DevExpress packages.
Make sure your DevExpress.com account has access to XAF. This product line is included in the Universal subscription.
Use your DevExpress credentials to log into nuget.devexpress.com.
Obtain your NuGet feed credentials and copy them to the clipboard.
Select DevExpress Online NuGet Feed as a NuGet Package Source.
Alternatively, do it in the console. Run the following commands:
# Register packages with an authorization key dotnet nuget add source https://nuget.devexpress.com/api/v3/index.json -n DXFeed -u DevExpress -p {your-feed-authorization-key} # Register packages with a feed URL dotnet nuget add source https://nuget.devexpress.com/{your-feed-authorization-key}/api/v3/index.json -n DXFeed
For more information, refer to the following topic: Install NuGet Packages with Command Line Interface (CLI) Tools.
An error may occur if the specified source is already in the source list. Run
dotnet nuget list source
to view all the configured sources and ensure the specified andnuget.org
package sources are enabled. To enable them, use thedotnet nuget enable source
command.You can also pass the NuGet feed as a
-nf
parameter when you create a project.dotnet new dx.xaf -n MyXafApp -p Blazor -nf https://nuget.devexpress.com/{your-feed-authorization-key}/api/v3/index.json
The command creates a project and adds the nuget.config file with the DevExpress feed to the project folder.
Step 3. Create an Application
Run the following command to generate an XAF application:
dotnet new dx.xaf -p Blazor Win -e2e -api Standalone -n DXApplication1
The expected output project should be identical to a project generated by the Solution Wizard with the specified platforms and other default options.
If you create a standalone Web API Service project, the cross-platform module project code is inserted into its appropriate place in the Web API Service project.
Command Options
Specify the following command line parameters to customize the project:
Default dotnet new
options:
-n, --name <name>
- Solution name. If omitted, the command uses the name of the output directory.
-o, --output <output>
- Specifies the output directory.
--dry-run
- Displays a summary of what would happen if the given command line were run.
--force
- Forces content to be generated even if it would change existing files.
--no-update-check
- Disables the check for the template package updates when instantiating a template.
--project <project>
- The project that should be used for context evaluation.
-lang, --language <C#>
- Specifies the template language to instantiate.
--type <solution>
- Specifies the template type to instantiate.
Template options:
-nf, --nuget-feed <nuget-feed>
- Specifies the NuGet Feed URL. Refer to https://nuget.devexpress.com/#feed-url and login to your account to obtain your personal feed URL.
-db, --database <sql-server>
- Name of an SQL server that the application will connect to. Default:
(localdb)\\mssqllocaldb
-orm <EFCore|XPO>
- The target ORM for the solution.
- EFCore (Default)
- Adds the Entity Framework Core ORM.
- XPO
- Adds the XPO ORM.
-p, --platform
- Adds a platform-specific project.
- Blazor
- Adds an ASP.NET Core Blazor XAF project.
- Win
- Adds a .NET Core Win XAF project.
- Default (Default)
- Adds an ASP.NET Core Blazor XAF project unless
-api Standalone
is specified. In this case, adds a Web API Service project.
-e2e
- Adds a Functional Test project with EasyTest if
true
. The default value isfalse.
-api <Integrated|None|Standalone>
- Adds a Web API Service project.
- Integrated
- Adds an integrated Web API Service to the ASP.NET Core Blazor project that is generated automatically if you did not specify it previously.
- Standalone
- Adds a Web API Service project to the solution. The base module code is placed in the suitable place in the project if you did not specify any platform-specific project.
- None (default)
- Does not add anything.
-s, --security <MiddleTier|None|OAuth2|Password|SSO|WinAD>
- Security options for the project. Multiple values are allowed.
- MiddleTier
- Adds a MiddleTier Web API Service project used by other platforms to access the database.
- OAuth2
- Adds OAuth2 authentication providers (for example, GitHub).
- Password (default)
- Adds standard password authentication.
- SSO
- Enables Single Sign-On authentication. Automatically enables the
OAuth2
option and disables thePassword
andWinAD
options. - WinAD
- Adds Windows Active Directory authentication.
- None
- No security options enabled.
-mt, --multitenancy
- Enables Multi-Tenancy if
true
. The default value isfalse
. -m, --modules <None|All|...>
- Adds XAF built-in modules to the project. Multiple values are allowed.
- None
- Does not add any modules.
- All
- Adds all modules available for your configuration.
- Default (default)
- Adds the Conditional Appearance and Validation Modules. For a standalone Web API Service project, adds the following modules: Audit Trail, Validation, File Attachments, and Reports V2.
- Audit
- Adds the ORM-specific Audit Trail Module.
- Charts
- Adds the Windows Forms Chart Module.
- Clone
- Adds the XPO Clone Object Module.
- Appearance
- Adds the Conditional Appearance Module.
- Dashboards
- Adds the Dashboards Module.
- Files
- Adds the File Attachments Module
- KPI
- Adds the Windows Forms KPI Module.
- Notifications
- Adds the Notifications Module.
- Office
- Adds the Office (Edit Rich Text & Spreadsheets) Module.
- PivotChart
- Adds the Windows Forms Pivot Chart Module.
- PivotGrid
- Adds the Windows Forms Pivot Grid Module.
- Reports
- Adds the Reports V2 Module.
- Scheduler
- Adds the Scheduler Module.
- ScriptRecorder
- Adds the Windows Forms Script Recorder Module.
- StateMachine
- Adds the State Machine Module.
- TreeList
- Adds the Windows Forms Tree List Editors Module.
- Validation
- Adds the Validation Module.
- Variants
- Adds the View Variants Module.
Note
The commands are case-insensitive.
Step 4. Run the Application
Navigate to the application folder, build the application, and run the project:
cd DXApplication1.Blazor.Server dotnet run
The command output should contain the application URL:
Now listening on: http://localhost:5000
Open your browser and navigate to the URL to see your application.
When you try to log in, the application should display the following message: “The application cannot connect to the specified database because the database doesn’t exist, its version is older than that of the application, or its schema does not match the ORM data model structure.” Run the
-updateDatabase
command to update your database. For more information, refer to the following article: Production Database and Application Updates. You can also create a database manually.