Vous pouvez utiliser cet extrait de code. Il comprend la configuration et la DI.
public class Program
{
public static ILoggerFactory LoggerFactory;
public static IConfigurationRoot Configuration;
public static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
if (String.IsNullOrWhiteSpace(environment))
throw new ArgumentNullException("Environment not found in ASPNETCORE_ENVIRONMENT");
Console.WriteLine("Environment: {0}", environment);
var services = new ServiceCollection();
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.SetBasePath(Path.Combine(AppContext.BaseDirectory))
.AddJsonFile("appsettings.json", optional: true);
if (environment == "Development")
{
builder
.AddJsonFile(
Path.Combine(AppContext.BaseDirectory, string.Format("..{0}..{0}..{0}", Path.DirectorySeparatorChar), $"appsettings.{environment}.json"),
optional: true
);
}
else
{
builder
.AddJsonFile($"appsettings.{environment}.json", optional: false);
}
Configuration = builder.Build();
LoggerFactory = new LoggerFactory()
.AddConsole(Configuration.GetSection("Logging"))
.AddDebug();
services
.AddEntityFrameworkNpgsql()
.AddDbContext<FmDataContext>(o => o.UseNpgsql(connectionString), ServiceLifetime.Transient);
services.AddTransient<IPackageFileService, PackageFileServiceImpl>();
var serviceProvider = services.BuildServiceProvider();
var packageFileService = serviceProvider.GetRequiredService<IPackageFileService>();
............
}
}
Oh, et n'oubliez pas d'ajouter dans le project.json
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": {
"includeFiles": [
"appsettings.json",
"appsettings.Integration.json",
"appsettings.Production.json",
"appsettings.Staging.json"
]
}
},
"publishOptions": {
"copyToOutput": [
"appsettings.json",
"appsettings.Integration.json",
"appsettings.Production.json",
"appsettings.Staging.json"
]
},
...
}
Directory.GetCurrentDirectory()
place deAppContext.BaseDirectory
. Il ne devrait pas y avoir besoin de hack par la suite.Pour une application console .NET Core 2.0, j'ai effectué les opérations suivantes:
Configurer pour copier le fichier dans le répertoire de sortie chaque fois que le projet est construit (dans VS -> Explorateur de solutions -> cliquez avec le bouton droit sur le fichier -> sélectionnez 'Propriétés' -> Avancé -> Copier dans le répertoire de sortie -> sélectionnez 'Copier toujours')
Installez le package nuget suivant dans mon projet:
Ajoutez ce qui suit à Program.cs (ou à
Main()
son emplacement):Ensuite, lisez les valeurs de l'une des manières suivantes:
Plus d'informations: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration#simple-configuration
la source
IConfigurationRoot
est toujours disponible dans .NET Core 2.0 . Il hérite de,IConfiguration
mais il est considéré comme un cas dérivé qui n'est pas couramment utilisé . Quoi qu'il en soit, l'exemple de code a été mis à jour pour ne pas l'inclure et éviter toute confusion.Si vous utilisez
Microsoft.Extensions.Hosting
(version 2.1.0+) pour héberger votre application console et votre application principale asp.net, toutes vos configurations sont injectées avecHostBuilder
des méthodesConfigureAppConfiguration
etConfigureHostConfiguration
. Voici la démonstration sur la façon d'ajouter lesappsettings.json
variables d'environnement et:Afin de compiler le code ci-dessus, vous devez ajouter ces packages:
la source
ASPNETCORE_ENVIRONMENT
maiscontext.HostingEnvironment.EnvironmentName
n'est pas correctement défininew HostBuilder()
redondante après ? NeHostBuilder
fait-il pas tout en interne?Je me trompais. Vous pouvez utiliser le nouveau à
ConfigurationBuilder
partir d'une application console netcore.Voir https://docs.asp.net/en/latest/fundamentals/configuration.html pour un exemple.
Cependant, seul aspnet core a une injection de dépendances prête à l'emploi, vous n'avez donc pas la possibilité d'avoir des paramètres de configuration fortement typés et de les injecter automatiquement à l'aide de
IOptions
.la source
Microsoft.Extensions.Options
et d'appelerservice.AddOptions();
ConfigureWebHostDefaults()
appels dans les exemples sont facultatifs et uniquement pour les applications Web.C'est quelque chose comme ça, pour une application de console de base dotnet 2.x:
Vous pouvez injecter ILoggerFactory, IConfiguration dans le fichier
SomeService
.la source
Sur .Net Core 3.1, nous devons simplement faire ceci:
L'utilisation de SeriLog ressemblera à:
Et la section Serilog appsetings.json pour générer un fichier quotidiennement ressemblera à ceci:
la source
Vous pouvez utiliser la bibliothèque LiteWare.Configuration pour cela. Il est très similaire à .NET Framework original
ConfigurationManager
et fonctionne pour .NET Core / Standard. Au niveau du code, vous vous retrouverez avec quelque chose comme:Avis de non-responsabilité: Je suis l'auteur de LiteWare.Configuration.
la source
Je m'empile juste ... semblable au message de Feiyu Zhou. Ici, j'ajoute le nom de la machine.
la source
Installez ces packages:
Code:
Classe MySettingsConfig:
Vos paramètres d'application peuvent être aussi simples que ceci:
En outre, définissez les fichiers de paramètres d'applications sur Contenu / Copie s'ils sont plus récents:
la source