2017-06-04 12 views
-1

まず最初に、この質問は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を参照してください。

答えて

1

cd ./bin/Debug/outを加えて解いた。だから、正しいスクリプトは次のとおりです。

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/ 

キーポイント:

cd ./bin/Debug/out 
dotnet Project.dll --urls "http://0.0.0.0:8080" 
関連する問題