Ska*_*gen 18 visual-studio-2010 visual-studio
我有一个带有后期构建事件的VS项目,该事件带有命令行命令,可将文件(.dll)复制到bin目标目录(调试或发布).当我对项目进行"清理"时,每个东西都被清理干净,但这个文件仍然存在.有没有办法广告后清理事件,所以我也可以删除此文件?
Leo*_*rke 17
您可以直接编辑项目文件,并将目标添加到文件末尾.  BeforeClean并且AfterClean是这里解释的目标:
http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx
您应该能够在目标中放置一个删除任务.
编辑 刚试过这个(右键单击项目 - >卸载 - >右键单击 - >编辑),您需要以下目标:
<Target Name="AfterClean">
    <Delete Files="$(TargetDir)\*.txt" />
</Target>
这在您清理项目但不是解决方案时有效 - 它可以工作但不是100%.
Fra*_*tis 11
我发现使用"删除文件"的Leom Burke的答案不适用于通配符,并且不会告诉您出现任何问题.这就是我所做的 -
<Target Name="BeforeClean">
        <Message Text="Cleaning other files..."/>
        <Exec Command="del $(ProjectDir)css\*.* /F /Q"/>
        <Exec Command="del $(ProjectDir)images\*.* /F /Q" />
        <Exec Command="del $(ProjectDir)js\*.* /F /Q" />
        <Exec Command="del $(ProjectDir)usercontrols\*.* /F /Q" />
        <Exec Command="del $(ProjectDir)MasterPages\*.* /F /Q" />
        <Exec Command="del $(ProjectDir)App_Data\TEMP\*.* /F /Q /S" />
        <Exec Command="del $(ProjectDir)App_Data\Logs\*.* /F /Q /S" />
    </Target>
我写了上面的内容来删除umbraco解决方案中的文件,这样当我对源代码控制中的内容进行差异处理时,它就不会让我感到困惑.
小智 9
您可以使用内置的Delete功能执行通配符.
<Target Name="AfterClean">
    <ItemGroup>
        <FilesToDelete Include="$(TargetDir)\*.txt"/>
    </ItemGroup>
    <Delete Files="@(FilesToDelete)" />
</Target>
我认为 Visual Studio 2017 发生了一些变化。
适用于标签:AfterTargets="Clean"
<Target Name="AfterClean" AfterTargets="Clean">
     <!-- Remove bin folder -->
     <RemoveDir Directories="$(TargetDir)" />
     <!-- Remove obj folder -->
     <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" />  
</Target>
关于AfterTargets的 @ scrat789 提示。
对于VS 2017,v15.6.0 Preview 2.0,我得到以下结果:
  <Target Name="MyDistClean" AfterTargets="Clean">
    <Message Text="Deleting wwwroot\dist files" Importance="high" />
    <Delete Files="$(ProjectDir)\wwwroot\dist\*.*" ContinueOnError="true" />
  </Target>
一些东西:
这是经过改进的任务,可以在Clean时清除webpack dist目录:
  <Target Name="MyDistClean" AfterTargets="Clean">
    <ItemGroup>
      <DistDir Include="$(ProjectDir)wwwroot\dist" />
    </ItemGroup>
    <Message Text="Deleting @(DistDir)" Importance="high" />
    <RemoveDir Directories="@(DistDir)" />
  </Target>