« Application console » : différence entre les versions
Apparence
Ligne 124 : | Ligne 124 : | ||
x.ClearProviders(); | x.ClearProviders(); | ||
x.AddConsole(); | x.AddConsole(); | ||
}); | }); | ||
using var host = hostBuilder.Build(); | using var host = hostBuilder.Build(); | ||
Ligne 133 : | Ligne 129 : | ||
var logger = host.Services.GetService<ILoggerFactory>()?.CreateLogger<Program>() ?? throw new NullReferenceException("ILoggerFactory service"); | var logger = host.Services.GetService<ILoggerFactory>()?.CreateLogger<Program>() ?? throw new NullReferenceException("ILoggerFactory service"); | ||
logger.LogDebug("Starting application"); | logger.LogDebug("Starting application"); | ||
</filebox> | </filebox> | ||
Version du 27 août 2023 à 12:57
Liens
Code
using System;
namespace MonNS
{
class MaClasse
{
public static void Main(string[] args)
{
Console.WriteLine("");
}
}
}
|
Read input
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Escape) { }
|
Masquer la saisie d'un mot de passe
|
Masquer la fenêtre de la Console
[DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
|
Couleurs
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("...");
Console.ResetColor();
|
Dependency injection
dotnet add package Microsoft.Extensions.Hosting |
Program.cs |
var hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureServices(x =>
{
x.AddSingleton<MyService>();
});
using var host = hostBuilder.Build();
var myService = host.Services.GetService<MyService>() ?? throw new NullReferenceException("MyService service");
// await host.RunAsync();
|
Logging in .Net Core Console Apps
dotnet add package Microsoft.Extensions.Logging.Console |
Program.cs |
var hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureLogging(x =>
{
x.ClearProviders();
x.AddConsole();
});
using var host = hostBuilder.Build();
var logger = host.Services.GetService<ILoggerFactory>()?.CreateLogger<Program>() ?? throw new NullReferenceException("ILoggerFactory service");
logger.LogDebug("Starting application");
|
Configuration
dotnet add package Microsoft.Extensions.Configuration.Json dotnet add package Microsoft.Extensions.Configuration.Binder |
Program.cs |
private static IConfiguration Configuration;
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory) // default value
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
var value1 = Configuration.GetValue<string>("section1");
var value2 = Configuration.GetValue<int>("section2");
var values = Configuration.GetSection("section3").Get<string[]>();
|
MyProject.csproj |
<!-- copy the appsettings.json file in the output folder -->
<ItemGroup>
<None Include="appsettings.json" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
|
Entity Framework Core
Program.cs |
// nuget package: Microsoft.Extensions.Hosting
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args); // allow to use scaffold with a named connection string
var connectionString = builder.Configuration.GetConnectionString("DB1");
var serverVersion = new MariaDbServerVersion(new Version(11, 0, 2));
builder.Services.AddDbContext<DB1Context>(
dbContextOptions => dbContextOptions
.UseMySql(connectionString, serverVersion)
// TODO The following three options help with debugging, but should be changed or removed for production.
.LogTo(Console.WriteLine, LogLevel.Information)
.EnableSensitiveDataLogging()
.EnableDetailedErrors());
builder.Services.AddTransient<ItemRepository>();
using IHost host = builder.Build();
var itemRepository = host.Services.GetService<ItemRepository>();
if (itemRepository is not null)
{
await itemRepository.GetAllItemsAsync();
}
//await host.RunAsync();
|