First of all this question is not same issue with dotnet publish doesn´t publish correct appsettings.{env.EnvironmentName}.json and i am sure there is no problem with name of environment.
os: linux(ubuntu 14.04)
dotnet --version: 1.0.3
Shell script:
export ASPNETCORE_ENVIRONMENT=Cloud9
cd ../../src/Project
dotnet restore
dotnet publish -c Debug -o bin/Debug/out/
cp ../../.config/Project /appsettings.Cloud9.json bin/Debug/out/ #copy settings file into publish directory
dotnet bin/Debug/out/Project.dll --urls "http://0.0.0.0:8080"
When i run above script it successfully serves site but with appsettings.json
values instead of appsettings.Cloud9.json
.
Here is my Startup.cs
constructor and Program.cs
:
//Sturtup.cs
public IConfigurationRoot Configuration { get; }
public Startup(ILoggerFactory loggerFactory, IHostingEnvironment environment)
{
var builder = new ConfigurationBuilder()
.SetBasePath(environment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
//Program.cs
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseConfiguration(config)
.Build();
host.Run();
}
A note: if i execute dotnet run --urls ...
without publish it runs as expected.
Second note: i see appsettings.Cloud9.json
in the out directory.