gpt4 book ai didi

visual-studio-2010 - 如何执行与从Powershell中发布Visual Studio中的发布完全相同的功能

转载 作者:行者123 更新时间:2023-12-03 13:31:01 25 4
gpt4 key购买 nike

我想知道如何像从Visual Studio中一样从PowerShell中进行发布。

例如,当您启动带有MVC项目的Visual Studio时;然后右键单击该项目并选择“发布”;出现一个对话框,您再次单击“发布”以填写一些设置。它神奇地按预期将您的网站推出。它还创建一个文件来保存这些设置。 projectName.Publish.xml。

该文件是我希望能够以完全相同的方式使用此文件的原因。在Powershell中可以使用一些设置来将应用程序推送到具有不同配置的多个站点。

我看过仅生成的“msbuild target:publish”(从包含.csproj的目录运行):

MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish

我试过了“msbuild projectfile target:publish”,它产生:
MSBUILD : error MSB1008: Only one project can be specified.
Switch: target:build

我还研究了msdeploy的几种变体。可以这么难!!如果您可以在Studio中单击鼠标右键,则可以执行某些任务。

我开始怀疑这是否需要满月并从鸡身上砍下头。 (我花了很多时间!)

**编辑:我尝试了李的建议:
msbuild target:publish Mvc.csproj

产生此错误:
MSBUILD : error MSB1008: Only one project can be specified.
Switch: Mvc.csproj

For switch syntax, type "MSBuild /help"

**编辑:根据DaveE的建议,我尝试了:
msbuild target:publish Mvc.csproj

产生此错误:
MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish=PassportHealth.PatientSimple.Mvc.csproj

我还返回了有关“发布”目标( http://msdn.microsoft.com/en-us/library/ms165431.aspx)的文档,该语法似乎很清楚:
msbuild target:publish

因此,在重读了几次之后,我的结论是:发布目标是一键式部署.exe文件而不是MVC网站。我发现 http://weblogs.asp.net/scottgu/archive/2010/09/13/automating-deployment-with-microsoft-web-deploy.aspx很清楚地说明了这一问题。我还没有看到如何通过msdeploy命令来利用“publish.xml”文件。

最佳答案

仅通过Visual Studio将projectName.publish.xml文件用于一键式发布。对于MSBuild,您需要直接在命令行上传递一堆参数(/ p:Param1 = value1; Param2 = value2; ...)。例如:
/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=InProc /p:MSDeployServiceUrl=localhost /p:DeployIisAppPath="Default Web Site/NewOrleansJazz" /p:UserName=domain\user /p:Password=myPassword(source)

请注意,在VS11 Preview(在BUILD session 上发布)中,有一个新文件替代projectName.publish.xml:MyPublishSettings.pubxml。此文件基本上是publish.xml文件和projectName.wpp.targets组合成一个文件(但也为每个配置文件拆分,而不是将它们全部保存到publish.xml中,例如TestSettings.pubxml,ProductionSettings.pubxml),并可以使用msbuild MyProject.csproj /t:WebPublish /p:PublishProfile="myProfile"以更简单的方式从命令行使用

[编辑:]几个注意事项:您帖子中的信息:

  • 关于仅指定单个项目的错误可能是由于错误地指定了目标。除项目名称外,传递给msbuild的所有参数均以/开头,例如/t[arget]:foo /p[roperty]:var=value
  • “发布”目标实际上与Web发布无关。 IIRC,它与发布OneClick应用程序有关。在VS2010中,您应该为Web项目使用/t:build /p:DeployOnBuild=true来使用发布任务(如上所述)。 VS11中的新功能是/t:WebPublish,它也带有一组更简单的参数,即您希望使用的.pubxml文件。
  • 附加说明:构建解决方案文件时,由于未在解决方案级别定义目标,因此/t:WebPublish将失败。它只能直接在Web项目的项目文件上使用。您仍可以在解决方案级别使用/p:DeployOnBuild=true,因为参数值将传递给正在构建的每个项目,但是任何不消耗该值的项目都将忽略该值。
  • 关于visual-studio-2010 - 如何执行与从Powershell中发布Visual Studio中的发布完全相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003125/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com