Dotnet 不知道特定于环境的 appsettings 文件
Posted
技术标签:
【中文标题】Dotnet 不知道特定于环境的 appsettings 文件【英文标题】:Dotnet isn't aware of environment specific appsettings file 【发布时间】:2017-06-04 08:00:37 【问题描述】:首先,这个问题与dotnet publish doesn´t publish correct appsettings.env.EnvironmentName.json 不同,我确信环境名称没有问题。
操作系统:linux(ubuntu 14.04)
dotnet --version: 1.0.3
Shell 脚本:
导出 ASPNETCORE_ENVIRONMENT=Cloud9
cd ../../src/项目
dotnet 恢复
dotnet publish -c Debug -o bin/Debug/out/
cp ../../.config/Project /appsettings.Cloud9.json bin/Debug/out/ #将设置文件复制到发布目录
dotnet bin/Debug/out/Project.dll --urls "http://0.0.0.0:8080"
当我在上面运行脚本时,它成功地为站点提供服务,但使用 appsettings.json
值而不是 appsettings.Cloud9.json
。
这是我的Startup.cs
构造函数和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();
注意:如果我执行 dotnet run --urls ...
而不发布它会按预期运行。
第二点:我在 out 目录中看到了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"
【讨论】:
以上是关于Dotnet 不知道特定于环境的 appsettings 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 FTP 发布 dotnet core web 后端?