Visual studio 2010 如何从powershell在visual studio内部执行与发布完全相同的功能
我想知道如何以与VisualStudio相同的方式从PowerShell发布 例如,当您使用MVC项目启动Visual Studio时;然后右键点击项目,选择“发布”;此时会出现一个对话框,您可以在“再次单击发布”对话框中填写一些设置。它神奇地将你的网站按预期推出。它还会创建一个文件来保存这些设置。projectName.Publish.xml 这个文件就是我希望能够以完全相同的方式使用它的原因。powershell中有几个设置可以被操纵,以将应用程序推送到具有不同配置的多个站点 我查看了“msbuild target:publish”,它只生成(从包含.csproj的目录运行): 我尝试了“msbuild projectfile target:publish”,它生成:Visual studio 2010 如何从powershell在visual studio内部执行与发布完全相同的功能,visual-studio-2010,visual-studio,powershell,msbuild,msdeploy,Visual Studio 2010,Visual Studio,Powershell,Msbuild,Msdeploy,我想知道如何以与VisualStudio相同的方式从PowerShell发布 例如,当您使用MVC项目启动Visual Studio时;然后右键点击项目,选择“发布”;此时会出现一个对话框,您可以在“再次单击发布”对话框中填写一些设置。它神奇地将你的网站按预期推出。它还会创建一个文件来保存这些设置。projectName.Publish.xml 这个文件就是我希望能够以完全相同的方式使用它的原因。powershell中有几个设置可以被操纵,以将应用程序推送到具有不同配置的多个站点 我查看了“ms
MSBUILD : error MSB1008: Only one project can be specified.
Switch: target:build
我还研究了几种msdeploy变体。不会这么难吧!?如果您可以在studio中单击鼠标右键,则会有一些东西执行该任务
我开始怀疑这是否需要一个满月和砍掉一只鸡的头。(我在这上面花了太多时间!)
**编辑:我尝试了李的建议:
msbuild target:publish Mvc.csproj
msbuild target:publish Mvc.csproj
这将产生以下错误:
MSBUILD : error MSB1008: Only one project can be specified.
Switch: Mvc.csproj
For switch syntax, type "MSBuild /help"
MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish=PassportHealth.PatientSimple.Mvc.csproj
**编辑:根据戴维的建议,我试着:
这将产生以下错误:
MSBUILD : error MSB1008: Only one project can be specified.
Switch: Mvc.csproj
For switch syntax, type "MSBuild /help"
MSBUILD : error MSB1009: Project file does not exist.
Switch: target:publish=PassportHealth.PatientSimple.Mvc.csproj
我还回顾了“Publish”target()的文档,它的语法似乎非常清楚:
msbuild target:publish
所以在重读了几遍之后,我的结论是:发布目标是一次点击部署.exe文件,而不是MVC网站。我已经找到了很清楚地说明这件事的方法。不过,我还不知道如何通过msdeploy命令使用此文件中的“publish.xml”文件。projectName.publish.xml文件仅通过Visual Studio用于一键式发布。对于MSBuild,需要直接在命令行上传递一组参数(/p:Param1=value1;Param2=value2;…)。例如:
/p:DeployOnBuild=True/p:DeployTarget=MsDeployPublish/p:CreatePackageOnPublish=True/p:MSDeployPublishMethod=InProc/p:MSDeployServiceUrl=localhost/p:deployiisappath=“默认网站/NewOrleansJazz”/p:UserName=domain\user/p:Password=myPassword
()
请注意,在VS11预览(在构建会议上发布)中,有一个新文件替换了projectName.publish.xml:MyPublishSettings.pubxml。该文件基本上是publish.xml文件和projectName.wpp.targets的组合(但也为每个概要文件拆分,而不是将它们全部保存到publish.xml中,例如TestSettings.pubxml、ProductionSettings.pubxml),并且可以通过使用msbuild MyProject.csproj/t:WebPublish/p:PublishProfile=“myProfile”
[编辑:]关于您帖子中的信息:
/
开头,例如/t[arget]:foo/p[roperty]:var=value
/t:build/p:DeployOnBuild=true
来使用发布任务(如上所述)。VS11中新增了/t:WebPublish
,它还采用了一组更简单的参数,即希望使用的.pubxml文件。
- 附加说明:在构建解决方案文件时,
将失败,因为目标未在解决方案级别定义。它只能直接用于Web项目的项目文件。当参数值传递给正在生成的每个项目时,您仍然可以在解决方案级别使用/t:WebPublish
,但任何不使用该值的项目都会忽略该参数值/p:DeployOnBuild=true
msbuild中的命令行选项是使用/opt:value指定的,因此要调用发布目标,您应该使用
msbuild/t:publish proj_file.csproj
。以下是指向MSDN msbuild概述(VS2008)的链接:感谢您的回答!!我已经知道了如何使用在“Package”目标中创建的自动生成命令来解决这个问题。VS2011的东西太棒了。我一直在想,为什么我的构建配置要负责web.config转换,在我看来,web.config转换与部署/发布环境更相关。我今天刚刚尝试了这个,几乎成功了。我必须更改MSDeployPublishMethod=WMSVC
。我还必须添加AllowUntrustedCertificate=True
,因为它是一个内部服务器。嗯