命令行:使用特定配置文件名称执行 ASP.Net Core dll

ole*_*ksa 5 c# asp.net-core

当我使用以下命令运行 ASP.Net Core 应用程序时,请帮助我指定配置文件名称dotnet WebApplicationLaunchProfile.dll

我使用这个简短的形式只是为了能够在 VS 之外运行该项目并检查它是如何工作的。

我知道我可以使用它dotnet run --launch-profile testProfileName,但需要.csproj.cs文件可用。我想避免复制源代码文件并使用编译的程序集。我的流程是:

  • 构建与dotnet build
  • 将构建结果(bin\Debug文件夹内容)复制到单独的文件夹
  • dotnet WebApplicationLaunchProfile.dll使用表单启动 dll 以使用正确的配置文件名称

然而问题是

使用 dotnet run 启动应用程序时,将使用第一个带有“commandName”的配置文件:“Project”

如果使用命令执行项目,则不应用文档中的规则dotnet dll。很明显,由于我没有使用该命令,因此不应应用它dotnet run

不过我想以某种方式指定配置文件名称。

我已经从 VS 模板创建了新的 ASP.Net Core 项目并更新了文件,launchSettings.json如下所示:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
...
  "profiles": {
...
    "WebApplicationLaunchProfile": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "applicationUrl": "https://localhost:4430;http://localhost:8080",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

我已经调整了该profiles:WebApplicationLaunchProfile:applicationUrl值并替换了 5000 和 5001 端口,如您所见。项目已上传到https://github.com/oleksabor/curly-broccoli只是为了快速参考。但除此之外没有任何修改launchSettings.json

我可以使用 VS 或dotnet run命令启动应用程序,没有任何问题

dotnet dll但是,使用如下命令执行应用程序时出现错误:

C:\projects\WebApplicationLaunchProfile\bin\Debug\netcoreapp3.1>dotnet WebApplicationLaunchProfile.dll                                                     
crit: Microsoft.AspNetCore.Server.Kestrel[0]
Unable to start Kestrel.                                                                                                                   
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use.  
Run Code Online (Sandbox Code Playgroud)

我已占用端口 5000,想使用 4430 代替。

dotnet WebApplicationLaunchProfile.dll --launch-profile WebApplicationLaunchProfile不起作用(错误是相同的)

是否可以设置配置文件名称dotnet dll

dev*_*pro 3

我本以为dotnet xxx.dll -launch-profile会起作用。您使用默认的 Program.cs 文件吗?(当我们使用 Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(...) 从模板创建项目时生成的,这就是配置魔法发生的地方)

否则,您可以尝试为您的进程设置此环境变量:ASPNETCORE_URLS。应该把它捡起来并使用。更多信息请参见 github 问题页面github.com/aspnet/KestrelHttpServer/issues/639。例如:set ASPNETCORE_URLS=https://localhost:4430;http://localhost:8080