Web部署到子文件夹,bin除外

时间:2015-04-10 21:08:54

标签: .net iis visual-studio-2013 webdeploy

我有一个Web应用程序项目,我想使用Visual Studio中的Web Deploy将其发布到我的网站。但是,我希望项目中的文件(设置为已发布)部署在foo 之外的{{{ 1}}和bin目录,仍应在root下部署。有没有一种干净的方法来改变App_Data配置文件?

我遇到的一些问题:

  • 我假设我无法将.pubxml元素设置为指向子文件夹,因为它不允许我在根目录中发布<DeployIisAppPath>bin文件夹。 / LI>
  • 我想限制拾取的文件是Web Deploy通常会发布的文件。我不想部署App_Data个文件。
  • 我事先并不知道完整的文件扩展名,因此我无法根据它们定义详尽的过滤器(例如.cs)。我想将任何过滤器定义限制为*.html|*.js|...bin文件夹。
  • 我想保留文件的文件夹结构。例如,App_Data应转到bar\Default.html
  • 我希望在Web Deploy预览窗口中提供此过程的结果。

1 个答案:

答案 0 :(得分:0)

我明白了;我需要定义一个Target,其Move任务在CopyAllFilesToSingleFolderForMsdeploy之后执行。这是在<PropertyGroup>文件中的.pubxml之后:

<Target Name="MoveFilesToDesignatedDirectory" 
        AfterTargets="CopyAllFilesToSingleFolderForMsdeploy">
  <Message Text="Moving files to designated directory" importance="high" />
  <ItemGroup>
    <_CustomMoveFiles Include="$(_PackageTempDir)\**"
                      Exclude="$(_PackageTempDir)\bin\**;
                               $(_PackageTempDir)\App_Data\**" />
  </ItemGroup>
  <Move SourceFiles="%(_CustomMoveFiles.Identity)"
        DestinationFolder="$(_PackageTempDir)\foo\%(RecursiveDir)" />
</Target>

参考文献: