首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MSBuild 2010 -如何将web应用程序发布到特定位置(nant)?

MSBuild 2010 -如何将web应用程序发布到特定位置(nant)?
EN

Stack Overflow用户
提问于 2010-05-28 19:37:48
回答 3查看 16.4K关注 0票数 18

我正在尝试让MSBuild 2010将web应用程序发布到特定位置。我可以让它将部署包发布到特定的路径,但部署包随后会添加自己的更改路径。

例如:如果我告诉它发布到C:\dev\build\Output\Debug,那么实际的web文件会在C:\dev\build\Output\Debug\Archive\Content\C_C\code\app\Source\ControllersViews\obj\Debug\Package\PackageTmp结束,路径的C_C部分会改变(不确定它是如何选择这部分路径的)。

这意味着我不能仅仅从发布位置编写一个副本。

我现在使用的是nant/msbuild命令:

代码语言:javascript
复制
  <target name="compile" description="Compiles">
<msbuild project="${name}.sln">

  <property name="Platform" value="Any CPU"/>
  <property name="Configuration" value="Debug"/>
  <property name="DeployOnBuild" value="true"/>
  <property name="DeployTarget" value="Package"/>
  <property name="PackageLocation" value="C:\dev\build\Output\Debug\"/>
  <property name="AutoParameterizationWebConfigConnectionStrings" value="false"/>
  <property name="PackageAsSingleFile" value="false"/>

</msbuild>

关于如何让它将web文件直接发送到特定位置,您有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-09 12:06:30

代码语言:javascript
复制
msbuild /t:Build;PipelinePreDeployCopyAllFilesToOneFolder /p:Configuration=Release;_PackageTempDir=C:\temp\somelocation;AutoParameterizationWebConfigConnectionStrings=false MyProject.csproj

对应的NAnt脚本:

代码语言:javascript
复制
<msbuild project="MyProject.csproj" target="PipelinePreDeployCopyAllFilesToOneFolder">
  <property name="Configuration" value="Release" />
  <property name="_PackageTempDir" value="C:\temp\somelocation" />
  <property name="AutoParameterizationWebConfigConnectionStrings" value="false" />
</msbuild>

参考文献

另请参阅Team Build: Publish locally using MSDeploy

票数 36
EN

Stack Overflow用户

发布于 2011-04-14 01:24:37

如果您使用的是VS2010 web应用程序(而不是网站项目),请考虑在项目中设置打包/发布网站设置,并在nant脚本中构建“项目”目标。

很多有趣的女士在这里部署好的和背景:http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx

在我的nant脚本中,我运行以下msbuild命令:

代码语言:javascript
复制
    <if  test="${property::exists('basename')}">
        <exec program="${msbuild.location}" workingdir="${project::get-base-directory()}">
            <arg value="/p:Configuration=${configuration}" />
            <arg value="/logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,${msbuild.logger.dll}" if="${nunit.formatter.type == 'Xml'}"/>
            <arg value="/noconsolelogger" if="${nunit.formatter.type == 'Xml'}"/>
            <arg value="${basename}.sln"/>
        </exec>
    </if>

...

    <if  test="${property::exists('basename')}">
        <exec program="${msbuild.location}" workingdir="${project::get-base-directory()}\${basename}">
            <arg value="/p:Configuration=${configuration}" />
            <arg value="/t:Package" />
            <arg value="/logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,${msbuild.logger.dll}" if="${nunit.formatter.type == 'Xml'}"/>
            <arg value="/noconsolelogger" if="${nunit.formatter.type == 'Xml'}"/>
            <arg value="${basename}.csproj"/>
        </exec>
    </if>

我的basename nant变量给出了web应用程序的VS解决方案文件(.sln)和项目文件(.csproj)的名称。我碰巧更喜欢项目设置中所示的zip文件部署:

还有一个额外的怪癖。如果在目标计算机上安装MSDeploy 2.0版,则必须编辑.deploy.cmd文件以更改MSDeploy版本号,如下所示:

变化

代码语言:javascript
复制
  for /F "usebackq tokens=2*" %%i  in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1" /v InstallPath`) do (

代码语言:javascript
复制
  for /F "usebackq tokens=2*" %%i  in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2" /v InstallPath`) do (
票数 2
EN

Stack Overflow用户

发布于 2010-07-01 02:43:37

我想你用错地方了。请改为尝试OutDir属性。

代码语言:javascript
复制
<arg value="/property:OutDir=C:\dev\build\Output\Debug\" />

就我个人而言,我直接调用MsBuild.exe而不是使用msbuild标记:

代码语言:javascript
复制
    <exec program="${MSBuildPath}">
        <arg line='"${ProjectFile}"' />
        <arg value="/target:_CopyWebApplication" />
        <arg value="/property:OutDir=${LocalDeployPath}\" />
        <arg value="/property:WebProjectOutputDir=${LocalDeployPath}" />
        <arg value="/property:Configuration=${SolutionConfiguration}" />
        <arg value="/verbosity:normal" />
        <arg value="/nologo" />
    </exec>

MSBuildPath - MsBuild.exe的路径(允许您针对任何您想要的框架版本)

ProjectFile -项目文件的相对路径

LocalDeployPath -将输出所有内容的本地文件夹。您的复制脚本也将使用它作为源目录。

SolutionConfiguration -发布、调试

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2928595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档