MSDeploy vs WebDeploy vs Publish-AzureWebsiteProject vs dnu publish

MSDeploy vs WebDeploy vs Publish-AzureWebsiteProject vs dnu publish

在了解如何将我们的 ASP.NET 5 应用程序发布到 Azure Web 应用程序时,我遇到了几种发布 .NET Web 应用程序的方法:

Internet 上关于此的信息非常分散,我无法理解这些不同 "techniques" 的用途。

它们之间的主要区别是什么?should/could何时使用它们?

部署 Web 应用程序的方法比此处列出的要多。有非常好的文档 here 讨论了部署 Web 应用程序的选项。例如,FTP、Git、Visual Studio、CLI 等...

不过从您的列表来看,Web Deploy 和 MS Deploy (msdeploy.exe) 是相同的,而且可以说是最常见的。 Web 部署是首选术语,您会在工具中看到它的使用。例如,如果您右键单击 ASP.NET 项目并选择 select 部署,Web 部署是默认选项。同样,还有其他的,上面的 link 解释了它们。

Publish-AzureWebsiteProject 是使用 PowerShell 构建 and/or 部署 Web 项目(即 code/app)的自动化方法之一,它使用Web 部署方法。

DNU(.NET 开发实用程序)用于构建、打包和部署 DNX(.NET 执行环境)项目。关于这个 here 有很多有用的信息。

MSDeploy 与 Web 部署

关于 MSDeploy 与 Web Deploy,正如 Rick 提到的,它们是同一回事。实际名称是 "Web Deploy" 但 .exe 被命名为 msdeploy.exe 所以这两个名称都被使用。

DNU 发布

dnu publish 是 DNX/ASP.NET 5 提供的跨平台实用程序,可用于将 DNX/ASP.NET 5 应用程序发布到文件夹。

让我解释一下这与您在 Visual Studio 2015 中看到的支持有何关系。在 VS2015 中,发布对话框的主要职责是在发布配置文件(.pubxml 文件)中保留设置。 Visual Studio 首先调用 dnu publish 将应用程序发布到本地文件夹。然后属性(所有属性,甚至您添加的自定义属性)作为-publishProperties参数传递到profilename.ps1文件。 dnu publish结果所在的文件夹路径通过-packOutput传入。那时控制权转移到 .ps1 文件,VS 不知道实际的发布内部。您可以删除 .ps1 的内容,只要参数保持不变,它就应该可以工作。

PowerShell 脚本及其使用的模块是 https://github.com/aspnet/vsweb-publish. The default script created by VS is at https://github.com/aspnet/vsweb-publish/blob/master/samples/default-publish.ps1 的 OSS。注意:此模块目前仅适用于 ASP.NET 5。如果您对以前的版本感兴趣,请告诉我,我们可以考虑添加支持。

如果您有兴趣了解有关该脚本的更多信息,我建议您在加载发布模块后 get-help Publish-AspNet。或者您可以查看源代码中的help text

发布-AzureWebsiteProject

Publish-AzureWebsiteProject 是随 Azure PowerShell 命令行工具一起提供的 PowerShell cmdlet。您可以使用它来发布 ASP.NET 4.5 项目或包到 Azure Web 应用程序(以前称为 Azure Websites)。我不相信这已更新为支持 ASP.NET 5,但我可能错了。