Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何从powershell在visual studio内部执行与发布完全相同的功能_Visual Studio 2010_Visual Studio_Powershell_Msbuild_Msdeploy - Fatal编程技术网

Visual studio 2010 如何从powershell在visual studio内部执行与发布完全相同的功能

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

我想知道如何以与VisualStudio相同的方式从PowerShell发布

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

这个文件就是我希望能够以完全相同的方式使用它的原因。powershell中有几个设置可以被操纵,以将应用程序推送到具有不同配置的多个站点

我查看了“msbuild target:publish”,它只生成(从包含.csproj的目录运行):

我尝试了“msbuild projectfile target:publish”,它生成:

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”

[编辑:]关于您帖子中的信息:

  • 仅指定单个项目的错误可能是由于错误地指定了目标。除了项目名称之外,传递给msbuild的所有参数都以
    /
    开头,例如
    /t[arget]:foo/p[roperty]:var=value
  • 发布目标实际上与Web发布无关。IIRC,它与发布一键式应用程序有关。在VS2010中,Web项目应该使用
    /t:build/p:DeployOnBuild=true
    来使用发布任务(如上所述)。VS11中新增了
    /t:WebPublish
    ,它还采用了一组更简单的参数,即希望使用的.pubxml文件。
    • 附加说明:在构建解决方案文件时,
      /t:WebPublish
      将失败,因为目标未在解决方案级别定义。它只能直接用于Web项目的项目文件。当参数值传递给正在生成的每个项目时,您仍然可以在解决方案级别使用
      /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
    ,因为它是一个内部服务器。嗯