.net Web部署到子文件夹(bin除外)

.net Web部署到子文件夹(bin除外),.net,iis,visual-studio-2013,webdeploy,.net,Iis,Visual Studio 2013,Webdeploy,我有一个web应用程序项目,我想使用Visual Studio中的web Deploy将其发布到我的网站。但是,我希望项目中的文件(设置为发布)部署在子文件夹结构下,foo,除了bin和App\u Data目录下的,这些目录仍应部署在root目录下。通过改变.pubxml配置文件,是否有一种干净的方法来实现这一点 我遇到了一些问题: 我假设我无法将元素设置为指向子文件夹,因为它不允许我在根目录下发布bin和App_Data文件夹 我希望将拾取的文件限制为通常由Web Deploy发布的文件。我

我有一个web应用程序项目,我想使用Visual Studio中的web Deploy将其发布到我的网站。但是,我希望项目中的文件(设置为发布)部署在子文件夹结构下,
foo
除了
bin
App\u Data
目录下的,这些目录仍应部署在root目录下。通过改变
.pubxml
配置文件,是否有一种干净的方法来实现这一点

我遇到了一些问题:

  • 我假设我无法将
    元素设置为指向子文件夹,因为它不允许我在根目录下发布
    bin
    App_Data
    文件夹
  • 我希望将拾取的文件限制为通常由Web Deploy发布的文件。我不想部署我的
    .cs
    文件
  • 我事先不知道完整的文件扩展名集,因此无法基于它们定义一个详尽的过滤器(例如
    *.html |*.js |…
    )。我想将任何筛选器定义限制为
    bin
    App\u Data
    文件夹
  • 我想保留文件的文件夹结构。例如,
    bar\Default.html
    应该转到
    foo\bar\Default.html
  • 我希望此过程的结果可以在Web部署预览窗口中获得

    • 我想出来了;我需要定义一个
      目标
      ,其中包含一个在
      copyallfilestosinglefoldperformsdeploy
      之后执行的任务。这在
      .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>
      
      
      
      参考资料:

      • 赛义德·易卜拉欣·哈希米的
      • 基思贝勒酒店