0

我正在尝试使用适用于 .NET Core 应用程序(4.2.2)的 Amazon Elastic Beanstalk 工具将 net6.0 应用程序发布到 AWS EB(Windows)。在撰写本文时,我需要包含 net6.0 运行时,因为 EB 尚不支持 net6.0。我可以使用 AWS Toolkit for Visual Studio 成功地将我的应用程序发布到 AWS。该工具包使用以下参数调用 dotnet publish:

Executing: dotnet publish "[my project path]" --output "[my project path]\bin\Release\net6.0\publish" --configuration "Release" --framework "net6.0"  --runtime win-x64 --self-contained true

工具包在成功发布后创建此配置文件 (aws-beanstalk-tools-defaults.json):

{
"additional-options" : "",
"application"        : "myApp",
"app-path"           : "/",
"configuration"      : "Release",
"enable-xray"        : false,
"enhanced-health-type" : "enhanced",
"environment"          : "myApp-test",
"framework"            : "net6.0",
"iis-website"          : "Default Web Site",
"region"               : "eu-west-1",
"self-contained"       : true,
"runtime"              : "win-x64"

}

但是,当我尝试将命令行实用程序与命令一起使用时:

dotnet eb deploy-environment -cfg myConfFile.json

自包含参数和运行时参数未传递给导致此调用的 dotnet deploy 调用:

dotnet publish "my project path]" --output "my project path]\bin\Release\net6.0\publish" --configuration "Release" --framework "net6.0"

我尝试在不使用配置文件的情况下传递参数

dotnet eb deploy-environment --profile XXX -c Release -env myApp-test -po --runtime "win-x64"

只是为了触发这个异常:

System.InvalidOperationException:选项缺少必需的参数:--runtime

无论如何使用此实用程序来发布使用自包含捆绑到基于 Windows 的 EB 实例的 net6.0 应用程序?

4

1 回答 1

0

这是适用于 .NET Core 的 AWS Beanstalk 工具 4.2.2 版中的错误/限制。该实用程序仅为非 Windows 环境读取此参数。然而,有一个解决方法。可以使用 --publish-options 参数传递 win-x64 参数,如下所示:

dotnet eb deploy-environment -c Release -cfg myConfFile --publish-options  "--runtime win-x64" "--self-contained true"

这实际上会导致警告:

warning NETSDK1179: One of '--self-contained' or '--no-self-contained' options are required when '--runtime' is used.

但自包含的图像仍将被发布。您实际上可以跳过 --self-contained 参数。结果将是相同的。

于 2022-01-15T16:36:22.483 回答