Nex*_*s23 57 .net-core asp.net-core dotnet-cli .net-core-rc2
我正在使用dotnet watch命令来运行asp.net核心项目.但是,默认情况下,它会将其Production作为一个环境.
我尝试了两种选择:
1) > dotnet watch ASPNETCORE_ENVIRONMENT=Development
2) > dotnet run ASPNETCORE_ENVIRONMENT=Development
Run Code Online (Sandbox Code Playgroud)
但它仍然把生产作为一种环境.
注意:在visual studio环境中,变量在项目属性中设置为默认情况下的开发,并从visual studio中选择该变量.
问题是:如何使用命令行在开发中运行dotnet核心项目?:
1) dotnet run
2) dotnet watch
Run Code Online (Sandbox Code Playgroud)
Chr*_*n.K 93
ASPNETCORE_ENVIRONMENT是一个环境变量(和AFAIK),而不是切换到dotnetcli.
那么你要做的就是在使用工具之前设置它:
rem Windows
C:\> set ASPNETCORE_ENVIRONMENT=Development
C:\> dotnet ...
rem Unix
$ export ASPNETCORE_ENVIRONMENT=Development
$ dotnet ...
Run Code Online (Sandbox Code Playgroud)
Tec*_*ium 27
你不有,如果你调整如何使用环境变量WebHostBuilder的过程它的配置.这仅仅是默认值dotnet new -t web.例如,如果你希望能够设置默认环境,"发展" ,而不是生产,并促进在命令行覆盖的环境中,你可以做到这一点通过修改正常Program.cs从这个代码...
public static void Main(string[] args) {
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Run Code Online (Sandbox Code Playgroud)
......变成这样的东西......
private static readonly Dictionary<string, string> defaults =
new Dictionary<string, string> {
{ WebHostDefaults.EnvironmentKey, "development" }
};
public static void Main(string[] args) {
var configuration =
new ConfigurationBuilder()
.AddInMemoryCollection(defaults)
.AddEnvironmentVariables("ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host =
new WebHostBuilder()
.UseConfiguration(configuration)
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Run Code Online (Sandbox Code Playgroud)
这样做,环境变量仍然可以工作,但你可以在命令行上覆盖它而不需要任何第三方依赖,如下所示:
dotnet run environment=development
dotnet run environment=staging
Run Code Online (Sandbox Code Playgroud)
这实际上是自耕农发电机的作用.
Gei*_*erg 24
您还可以在调用时设置内联变量dotnet:
ASPNETCORE_ENVIRONMENT=Development dotnet run
Run Code Online (Sandbox Code Playgroud)
我发现这对于NPM脚本很有用,但必须始终在之前调用dotnet,例如:
{
...
"scripts": {
"start": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet run",
"watch": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet watch"
},
}
Run Code Online (Sandbox Code Playgroud)
注意:这仅适用于OS X或Linux; 对于跨平台解决方案,您可以使用cross-env:
npm install cross-env -D
Run Code Online (Sandbox Code Playgroud)
然后将脚本更改为:
{
...
"scripts": {
"start": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet run",
"watch": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet watch"
},
}
Run Code Online (Sandbox Code Playgroud)
Rou*_*ouR 15
检查文件
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-run?tabs=netcore21
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.1
dotnet run --launch-profile EnvironmentsSample
Run Code Online (Sandbox Code Playgroud)
启动设置.json
{
"profiles": {
"EnvironmentsSample": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging"
},
"applicationUrl": "http://localhost:54340/"
},
}
}
Run Code Online (Sandbox Code Playgroud)
emr*_*ins 14
资料来源:https://blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/
造型添加.
如果您在Windows中使用PowerShell,请执行
$Env:ASPNETCORE_ENVIRONMENT = "Development"如果您在Windows中使用cmd.exe,请执行
setx ASPNETCORE_ENVIRONMENT "Development",然后重新启动命令提示符以使更改生效如果您使用的是Mac/Linux,请执行
export ASPNETCORE_ENVIRONMENT=Development
要使用 dotnet run 或 dotnet watch 从 CLI 进行设置:
dotnet run --environment Development
dotnet watch run --environment Development
| 归档时间: |
|
| 查看次数: |
37089 次 |
| 最近记录: |