# Console Application Setup One of the most significant breakthroughs in ElectronNET.Core is the ability to build Electron applications using simple console applications instead of requiring ASP.NET Core. This removes a major barrier and enables many more use cases. ## 🎯 What You Can Build Console applications with ElectronNET.Core support multiple content scenarios: - **File System HTML/JS** - Serve static web content directly from the file system - **Remote Server Integration** - Connect to existing web servers or APIs - **Lightweight Architecture** - Avoid ASP.NET overhead when not needed - **Simplified Deployment** - Package and distribute with minimal dependencies ## 📋 Prerequisites Before starting, ensure you have: - **.NET 8.0** or later - **Node.js 22.x** or later - **Visual Studio 2022** (recommended) or Visual Studio Code ## 🚀 Quick Start ### 1. Create Console Application Create a new Console Application project in Visual Studio: ```bash dotnet new console -n MyElectronApp cd MyElectronApp ``` ### 2. Install NuGet Packages ```powershell PM> Install-Package ElectronNET.Core ``` > **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. ### 3. Configure Project File Add the Electron.NET configuration to your `.csproj` file: ```xml Exe net8.0 win-x64 ``` ### 4. Implement Basic Structure Here's a complete console application example: ```csharp using System; using System.Threading.Tasks; using ElectronNET.API.Entities; namespace MyElectronApp { public class Program { public static async Task Main(string[] args) { var runtimeController = ElectronNetRuntime.RuntimeController; try { // Start Electron runtime await runtimeController.Start(); await runtimeController.WaitReadyTask; // Initialize your Electron app await InitializeApp(); // Wait for shutdown await runtimeController.WaitStoppedTask; } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); await runtimeController.Stop(); await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)); } } private static async Task InitializeApp() { // Create main window var browserWindow = await Electron.WindowManager.CreateWindowAsync( new BrowserWindowOptions { Width = 1200, Height = 800, Show = false, WebPreferences = new WebPreferences { NodeIntegration = false, ContextIsolation = true } }); // Load your content (file system, remote URL, etc.) await browserWindow.WebContents.LoadURLAsync("https://example.com"); // Show window when ready browserWindow.OnReadyToShow += () => browserWindow.Show(); } } } ``` ## 📁 Content Sources ### File System Content Serve HTML/JS files from your project: ```csharp // In your project root, create wwwroot/index.html await browserWindow.WebContents.LoadFileAsync("wwwroot/index.html"); ``` ### Remote Content Load content from any web server: ```csharp await browserWindow.WebContents.LoadURLAsync("https://your-server.com/app"); ``` ### Development Server For development, you can run a simple HTTP server: ```csharp // Add this for development if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") { await browserWindow.WebContents.LoadURLAsync("http://localhost:3000"); } ``` ## 🔧 Configuration Options ### Project Configuration Configure Electron settings through MSBuild properties in your `.csproj`: ```xml My Electron App MyApp Your Name ``` ### Runtime Configuration Access configuration at runtime: ```csharp var app = await Electron.App.GetAppAsync(); Console.WriteLine($"App Name: {app.Name}"); ``` ## 🎨 Customization ### Window Options Customize your main window: ```csharp var options = new BrowserWindowOptions { Width = 1400, Height = 900, MinWidth = 800, MinHeight = 600, Frame = true, Title = "My Custom App", Icon = "assets/app-icon.png" }; ``` ### Multiple Windows Create additional windows as needed: ```csharp var settingsWindow = await Electron.WindowManager.CreateWindowAsync( new BrowserWindowOptions { Width = 600, Height = 400, Modal = true }, "app://settings.html"); ``` ## 🚀 Next Steps - **[Debugging](Debugging.md)** - Learn about debugging console applications - **[Package Building](Package-Building.md)** - Create distributable packages - **[Migration Guide](../Core/Migration-Guide.md)** - Moving from ASP.NET projects ## 💡 Benefits of Console Apps ✅ **Simpler Architecture** - No ASP.NET complexity when not needed ✅ **Flexible Content** - Use any HTML/JS source ✅ **Faster Development** - Less overhead for simple applications ✅ **Easy Deployment** - Minimal dependencies ✅ **Better Performance** - Lighter weight than full web applications