Если у меня есть два файла настроекappSettings.json и appSettings.Development.json
Когда я использую публикацию из Visual Studio, оба должны быть скопированы в целевую папку?Я не уверен, потому что они оба появляются в целевой папке (на сервере разработки), когда я публикую.У меня сложилось впечатление, что они объединились во время сборки и был опубликован ONLY файл appSettings.json.Если нет, то нужно ли вручную рассматривать кодирование этих различий, как я видел в нескольких примерах?
напр.Этот пример загружает настройки через код (НЕ как я это делаю)Примечание - они используют имя среды, параметр ASPNETCORE_ENVIRONMENT
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Часть моего класса Startup показана ниже.Примечание. Я не ссылаюсь на параметр среды.
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// In production, the Angular files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
}
[ Обновление ]Я нашел свой ответ здесь - ключ, который мне не хватало, это обновление файла csproj для параметров публикации, относящихся к среде.https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2#configuration-with-webconfig Итак, я предполагаю, что если у меня будет несколько разных сред, каждая со своим собственным файлом настроек, то публикация приведет к тому, что ВСЕ из них будут отправлены в целевой каталог?