我正在尝试在.NET Core 2.0应用程序中设置多个环境.请参阅下面的代码.
I am trying to setting up multiple environments in my .NET Core 2.0 application. See my code below.
"configurations": [ { "name": ".NET Core Launch (web)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. "program": "${workspaceRoot}/my.api/bin/Debug/netcoreapp2.0/my.api.dll", "args": [], "cwd": "${workspaceRoot}/my.api", "stopAtEntry": false, "requireExactSource": false, "internalConsoleOptions": "openOnSessionStart", "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", "windows": { "command": "cmd.exe", "args": "/C start ${auto-detect-url}" }, "osx": { "command": "open" }, "linux": { "command": "xdg-open" } }, "env": { "ASPNETCORE_ENVIRONMENT": "Development" }, "sourceFileMap": { "/Views": "${workspaceRoot}/Views" } }, { "name": ".NET Core Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}" } ]Program.cs
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }StartUp.cs
public class Startup { public IContainer ApplicationContainer { get; private set; } private IHostingEnvironment HostingEnvironment { get; set; } public IConfigurationRoot Configuration { get; } private string ConnectionString { get { return this.HostingEnvironment.IsDevelopment() ? Configuration.GetConnectionString("DefaultConnection") : Configuration.GetConnectionString("Production"); } } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.Azuredev.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); Configuration = builder.Build(); this.HostingEnvironment = env; System.Console.WriteLine(env.EnvironmentName); // Here it always give me Production. }我的问题
我尝试使用 dotnet run --environment"Development"
因此,它应该在开发环境上运行,但始终与生产一起运行,(看起来我已经在我的 console.writeline 中添加了它) startup.cs 文件)
So, it should run on Development Environment, but it always runs with Production, (look I have added console.writeline in my startup.cs file)
现在奇怪的是,如果我使用 F5 进行调试,那么它可以在 development 环境中完美运行.
Now the strange thing is that if I use F5 to Debug then it runs perfectly with the development environment.
推荐答案您可以更新launchsettings.json以包含开发"配置文件,然后运行:
You can update your launchsettings.json to include a 'Development' profile and then run:
dotnet run --launch-profile "Development"有关launchSettings.json文件配置的更多详细信息,请参见使用多种环境
For further details on configuration of the launchSettings.json file see Working with multiple environments
请注意,commandName可能需要为"Project"(我并没有做太多尝试).示例launchSettings.json如下:
Note that the commandName would probably need to be "Project" (I haven't really tried this much). Example launchSettings.json as follows:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "localhost:19882/", "sslPort": 0 } }, "profiles": { "Development": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }更多推荐
在.NET Core 2.0中设置环境变量
发布评论