如何从命令行 MSDeploy ASP.NET 核心应用程序? (csproj 不是 project.json)

How to MSDeploy an ASP.NET Core app from command line? (csproj not project.json)

是否可以通过 msdeploy.exe 和 .pubxml 定义来部署 ASP.NET 核心应用程序,类似于 .NET Core 之前的版本?这是我之前使用过的命令:

msbuild myproj.csproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name>

如果不是,从命令行部署 ASP.NET 核心应用程序的首选方法是什么?

使用 dotnet cli 工具的一种方法是 dotnet publish 命令。

dotnet restore
dotnet publish -c Release -o output

这将恢复所有 NuGet 依赖项,然后在名为 output 的文件夹中创建发布版本。然后您可以 "xcopy deploy" 它,添加到 Dockerfile 或做任何您需要做的事情。

请注意,这适用于使用更新版本的 dotnet cli 工具(不再支持 project.json 文件)的基于 csproj 的项目。

您可以在此处找到有关命令行用法的文档: https://github.com/aspnet/websdk/blob/dev/README.md#microsoftnetsdkpublish

您可以使用以下任何命令从命令行使用 MSDeploy 进行发布

msbuild WebApplication.csproj /p:DeployOnBuild=true /p:PublishProfile=<MsDeployProfileName> /p:Password=<DeploymentPassword>

dotnet publish WebApplication.csproj /p:PublishProfile=<MsDeployProfileName> /p:Password=<DeploymentPassword>

您可以在此处找到各种配置文件的示例 - https://github.com/vijayrkn/PublishProfiles/tree/master/samples

修正错误。确保在 运行 发布命令之前 运行 先恢复:

dotnet restore 

要将您的 asp.net 核心应用程序部署到 Azure Web 应用程序,只需执行以下步骤:

1. dotnet publishsomeproject.csproj -c release -o someDirectory
2. msdeploy.exe  -verb:sync -source:contentPath="someDirectory" -dest:contentPath="webAppName",ComputerName="https://WebAppName.scm.azurewebsites.net/msdeploy.axd",UserName="username",Password="password",IncludeAcls="False",AuthType="Basic"
-enablerule:AppOffline -enableRule:DoNotDeleteRule -retryAttempts:20 -verbose

用户名和密码可以在 Azure 门户的 Web 应用程序的部署预览部分中检索或设置。我已经为我的 msdeploy.exe 设置了一个环境路径,通常可以在这里找到 C:\Program Files\IIS\Microsoft Web Deploy V3.