[英]Shared appsettings.json file between web and console VS project at .Net Core
[英]appsettings.json file not in .net core console project
我了解.net核心已將app.config文件替換為appsetting.json。 但是,似乎只為ASP.net項目添加了此文件。 實際上,它甚至在添加項列表中都不可用。 我發現這篇文章中列出了需要添加的軟件包:
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.FileExtensions
- Microsoft.Extensions.Configuration.Json
我添加了所有這些內容,它的確使我可以選擇添加json配置文件,但仍然不能添加僅在ASP.Net Core下可用的“ App Settings File
。 我試圖理解為什么非Web項目不需要配置以及配置.net核心控制台應用程序的推薦方法是什么。 提前致謝。
非Web項目可能需要配置, 也 可能不需要。 但是,正如您所注意到的,Visual Studio不會使用appsettings.json
控制台項目。 顯然,您可以將其作為json文件添加到項目中。 一旦擁有它,挑戰就是要利用它。 我經常在實體框架實用程序中使用配置對象和依賴項注入。
例如,
public static class Program
{
private static IConfigurationRoot Configuration { get; set; }
public static void Main()
{
IConfigurationBuilder builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
IServiceCollection services = new ServiceCollection();
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IMyService, MyService>();
IServiceProvider provider = services.BuildServiceProvider();
IMyService myService = provider.GetService<IMyService>();
myService.SomeMethod();
}
public class TemporaryDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
{
public MyDbContext CreateDbContext(string[] args)
{
IConfigurationBuilder configBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
IConfigurationRoot configuration = configBuilder.Build();
DbContextOptionsBuilder<MyDbContext> builder = new DbContextOptionsBuilder<MyDbContext>();
builder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
return new MyDbContext(builder.Options);
}
}
}
這使我可以針對DbContext運行遷移和基於控制台的實用程序。 您無需指定所需的配置類型,因此這只是一個示例。 但希望您可以根據需要進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.