まず最初に、この質問はdotnet publish doesn´t publish correct appsettings.{env.EnvironmentName}.jsonと同じ問題ではなく、環境の名前に問題はないと確信しています。Dotnetは環境固有の設定ファイルを認識していません
OS:Linuxの(Ubuntuの14.04)
DOTNETの--version:1.0.3
シェルスクリプト:
輸出ASPNETCORE_ENVIRONMENT = Cloud9
CD。 ./../src/Project
DOTNET
はDOTNET -cデバッグ-o binが/デバッグ/アウト/
CP ../../.config/Project /appsettings.Cloud9.jsonビン/デバッグ/アウト/ #copyパブリッシュ設定の復元公開ディレクトリ私はスクリプト上で実行すると
DOTNETビン/デバッグ/アウト/ Project.dll --urls「http://0.0.0.0:8080」
が正常にサイトを提供していますが、appsettings.json
値の代わりに、appsettings.Cloud9.json
とに提出。
//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();
}
注:ここでは
は私Startup.cs
コンストラクタとProgram.cs
である私はdotnet run --urls ...
はせずに、それを公開し実行した場合に予想されるように動作します。
2番目の注:私はアウトディレクトリにappsettings.Cloud9.json
を参照してください。