【问题标题】:Is there a way to stop VS2008 Web Deployment Project from creating Source folder when using ExcludeFromBuild?使用 ExcludeFromBuild 时,有没有办法阻止 VS2008 Web 部署项目创建源文件夹?
【发布时间】:2011-03-18 12:17:10
【问题描述】:

当使用 ExcludeFromBuild 排除 Web 部署项目中的文件时,例如

  <ItemGroup>
      <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.csproj*"/>
  </ItemGroup>

我最终得到一个 Source 文件夹,其中包含 ReleaseDebug 文件夹旁边的所有文件夹。如果我不使用任何 ExcludeFromBuild 选项,则此文件夹不会显示。

有没有办法阻止这个文件夹被创建?为什么要创建它?

【问题讨论】:

    标签: asp.net visual-studio-2008 msbuild web-deployment-project


    【解决方案1】:

    在 Misrosoft.WebDeployments.targets 文件(导入 Web 部署项目文件)中有一个 _CopyBeforeBuild 目标,当 ExcludeFromBuild 属性不为空或指定 EnableCopyBeforeBuild 时,它会复制所有源文件:

    ...
    
    <CopyBeforeBuildTargetPath>$(MSBuildProjectDirectory)\Source</CopyBeforeBuildTargetPath>
    
    ...
    
    <Target Name="_CopyBeforeBuild" Condition=" '$(EnableCopyBeforeBuild)' == 'true' or '@(ExcludeFromBuild)' != ''  ">
        ...
        <RemoveDir Directories="$(CopyBeforeBuildTargetPath)"/>
        <MakeDir Directories="$(CopyBeforeBuildTargetPath)"/>
        <Copy SourceFiles="@(_WebFiles)" DestinationFolder="$(CopyBeforeBuildTargetPath)\%(_WebFiles.SubFolder)%(_WebFiles.RecursiveDir)" />
        ...
    </Target>
    

    所以脚本会创建源目录并且不会删除它。那个目录也让我很烦,所以我在 web 部署项目文件中添加了下一行:

    <Target Name="AfterBuild">
        <RemoveDir Directories="$(CopyBeforeBuildTargetPath)" />
    </Target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多