msbuild - 如何使用 MSBuild 避免使用 MSDeploy 到文件系统的这种深层文件夹结构?

标签 msbuild teamcity msdeploy webdeploy

我正在解决这个 MSBuild 问题。

我们正在使用 TeamCity 构建一个包含两个 MVC 网站的解决方案。作为构建的一部分,我们将部署到构建服务器上的文件夹。 IIS 指向这个文件夹,为我们提供一个对管理层可见的集成构建。

这是 MSBuild 文件中使用 MSDeploy 发布包的代码 - 但不是 zip 文件。

<Target Name="Deploy">
  <MSBuild 
    Projects="$(SolutionFile)"
    Properties="Platform=$(Platform);Configuration=$(Configuration);
    DeployOnBuild=true;
    DeployTarget=Package;
    PackageLocation=$(PackageLocation);
    PackageAsSingleFile=False;
    AutoParameterizationWebConfigConnectionStrings=False" />
</Target>

这里的问题是我们得到了一个非常深的文件夹结构。这是一个例子...

C:\DEPLOY\Archive\Content\C_C\Users\Edmond\Documents\Visual Studio 2008\CreatioGreen\Creatio\Code\core\trunk\Website\Website\obj\Release\Package\PackageTmp[已发布的文件]

我真的很想部署到可预测的文件夹,例如...

C:\build\website[已发布的文件]
C:\build\mobilewebsite[已发布的文件]

这就是背景。以下是具体问题。
  • 我们是否在尝试使用 MSDeploy 发布到本地文件系统时犯了错误?我们基本上需要等效于 VS2010 的“发布”功能,以及配置转换。我们不是要部署到远程 IIS 实例或任何东西。
  • 除了指定发布文件夹之外,有没有其他方法可以做到这一点?
  • 我一直在尝试使用 MSBuild Copy 任务将文件复制到更合理的文件夹中 - 但我无法弄清楚如何使用通配符来指定我们需要使用的文件夹 - 它需要类似于......

  • C:\FolderPackageEndsUpIn[ANYFOLDERS]\Website[ANYFOLDERS]\PackageTmp**。

    帮助!

    最佳答案

    您可以直接使用 WebDeploy 来获得更优化的结果。例如,您可以使用以下命令直接从 root 到 root 同步 2 个文件夹:
    >"%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:dirPath=<SourceFolder> -dest:dirPath=<DestinationFolder>
    或者,您可以使用 iisApp 提供程序而不是 dirPath 使 WebDeploy 在目标上包含 IIS 配置:
    >"%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:iisApp=<SourceFolderOrIISPath> -dest:iisApp=<DestinationFolderOrIISPath>
    例如,要从一个简单的文件夹同步到默认网站下的新应用程序“NewApp”,您可以这样调用它:
    >"%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:iisApp="d:\MyWebSite" -dest:iisApp="Default Web Site/NewApp"
    然后,您可以拥有一个批处理文件,该文件将通过直接调用 WebDeploy 执行同步/打包,并将作为构建后事件执行。

    关于msbuild - 如何使用 MSBuild 避免使用 MSDeploy 到文件系统的这种深层文件夹结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193788/

    相关文章:

    msbuild - 在 TeamCity 构建中找不到 "TransformXml"任务(错误 MSB4036)

    msbuild - TeamCity - 如何创建安装程序包?

    .net - GitHub 操作发布我的站点并以 HTTP ERROR 500.30 结束

    .net - VSSDK : can't build solution with mixed style csproj-projects containing VSIX-projects

    node.js - 如何解决MSBUILD : error MSB4132 on windows 10?

    c# - Nant 0.92 不会使用 vs 2012 在 64 位操作系统上构建 32 位解决方案

    visual-studio-2013 - Visual Studio 发布配置文件发布错误的构建配置

    powershell - 通过 TeamCity 将带引号的参数传递给 PowerShell 脚本

    teamcity - 使用 TeamCity 设置 Orchard 项目的部署

    iis - MSDeploy - 将文件复制到 iis 应用程序的子文件夹的同步命令