如何通过msbuild / msdeploy部署.net核心rc2项目?

时间:2016-06-16 21:34:20

标签: msbuild web-deployment msdeploy .net-core .net-core-rc2

目前,我们通过调用带有MSBuild.exeDeployOnBuild=true参数的PublishProfile=Whatever来部署我们的Web应用程序项目(csproj),以将我们的项目部署到以下某项:

  • IIS on premisis
  • Azure Web Apps
  • Web部署包

我们想开始使用新的.net核心rc2项目,但我们真的不确定如何部署它们。我们可以使用较旧的发布配置文件/发布方法吗?

通过Visual Studio Publishing UI时,我只看到File SystemMicrosoft Azure App Service作为选项。文件系统不构建Web部署包,我们希望继续使用部署包技术,尤其是在不同环境之间推广相同的构建。

一般而言,任何有关通过msbuild以类似于我们之前的方式部署.net核心rc2应用程序的建议都会非常棒。但是,具体来说,我想知道如何通过msbuild将.net核心rc2项目部署到Web部署包。谢谢你的建议!

2 个答案:

答案 0 :(得分:3)

就像一个注释:围绕.NET Core和ASP.NET Core的工具在“预览1”中尚未完成,我提议的解决方案可能会随着下一个版本而改变。

反正。 msdeploy.exe仍在运行,但需要了解有关msdeploy CLI的一些知识。

我刚刚使用FAKE(F#Make)配置了一个持续的部署过程,但是如果您对它有更深入的了解,它也应该与MSBuild一起使用。

第一步是使用“dotnet publish”使用如下参数部署到特定文件夹:

"dotnet publish " + webPath + " --framework net461 --output " + publishFolder + 
    " --configuration " + buildConf + " --no-build"

您需要使用与此类似的参数调用msdeploy.exe:

"msdeploy.exe -source:contentPath=" + publishFolder + " -dest:contentPath=" + targetFolder + 
    ",ComputerName=" + computerName + ",UserName='" + username + "',Password='" + publishPassword + 
    "',IncludeAcls='False',AuthType='Basic' -verb:sync -enablerule:AppOffline -enableRule:DoNotDeleteRule -retryAttempts:20"
如果您发布到Azure,

Visual Studio的功能完全相同。如果您使用Visual Studio进行尝试,您将在发布输出窗口中看到它。

答案 1 :(得分:2)

很多!为我工作!

我用过:

$website = Get-AzureWebsite -Name [AzureWebsiteName]

# get the SCM URL to use with MSDeploy.  
# by default this will be the second in the array.
$msDeployHost = $website.EnabledHostNames[1]

然后我创建了像这样的-dest:contentPath

$destPath="$($website.Name),ComputerName='https://$msDeployHost/msdeploy.axd',UserName='$($website.PublishingUsername)',Password='$($website.PublishingPassword)',IncludeAcls='False',AuthType='Basic'"