问题 MSDeploy vs WebDeploy vs Publish-AzureWebsiteProject vs dnu publish [closed]


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

  • MSDeploy
  • WebDeploy
  • Publish-AzureWebsiteProject
  • dnu publish

互联网上关于这一点的信息非常分散,我无法理解这些不同的“技术”的用途。

它们之间的主要区别是什么?它们应该/何时可以使用?


7802
2017-09-17 05:58


起源

您的问题已在审核中使用,现在进行讨论 元。我们能否找到一种方法来减少列表/广泛/基于意见的帖子? - rene
@rene:你能否提一下如何重新解释我的问题?我宁愿问 每个目的是什么目的? - davenewza
一种方法可能是采取一个选项,例如:publish-azurewebsite项目然后声称这对你的asp.net-5网站不起作用,你尝试了msdeploy但缺乏vs-ide支持(我不支持)知道这是否属实,但我想在这里生成选项)。那么问题可能是:如何使我的发布工作流更方便。目前的答案仍适合这种情况。 - rene


答案:


MSDeploy与Web部署

关于MSDeploy vs 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 将应用程序发布到本地文件夹。那么属性(所有这些,甚至是你添加的自定义的)被传递给了 profilename.ps1 归档为 -publishProperties 参数。结果所在文件夹的路径 dnu publish 正在通过 -packOutput。此时控制转移到 .ps1 文件,VS不知道实际的发布内部。你可以把内容扼杀 .ps1 只要参数保持不变就应该有效。

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

如果您有兴趣了解有关该脚本的更多信息,我建议您使用 get-help Publish-AspNet 加载发布模块后。或者你可以检查一下 帮助文本 在源头。

发布 - AzureWebsiteProject

Publish-AzureWebsiteProject 是Azure PowerShell命令行工具附带的PowerShell cmdlet。您可以使用它来发布和 ASP.NET 4.5 项目或包到Azure Web Apps(以前称为Azure网站)。我不相信这已经更新以支持ASP.NET 5,但我可能在那里错了。


5
2017-09-23 01:52





此处列出的方法多于部署Web应用程序。有很好的文档 这里 讨论了部署Web应用程序的选项。例如,FTP,Git,Visual Studio,CLI等......

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

Publish-AzureWebsiteProject是 其中之一 使用PowerShell自动构建和/或部署Web项目(即:代码/应用程序)的方法,它使用Web Deploy方法。

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


6
2017-09-17 13:18



发布DNX应用程序的大多数示例都使用MS Deploy。他们为什么不使用DNU发布?为什么我们不只是使用Publish-AzureWebsiteProject?或者这实际上是否在内部调用DNU发布? Web部署与右键单击项目并选择发布一样吗?那么MSBuild上的FileSystemPublish目标呢?这是否转化为上述任何一种? - davenewza
Web部署是最常见的,我怀疑是为什么你会看到它的很多例子。 MSBuild用于构建Web应用程序项目,但也可以在命令行形式中使用以自动发布构建输出。顺便说一下,我对原来的答案进行了一些编辑,以解决你提出的其他问题。 - Rick Rainey