我有一个带有后期构建事件的VS项目,命令行命令将文件(.dll)复制到bin目标目录(调试或发布)。当我对项目进行“清理”时,每个东西都被清理干净,但这个文件仍然存在。有没有办法广告后期清理事件,所以我也可以删除这个文件?
答案 0 :(得分:17)
您可以直接编辑项目文件,并将目标添加到文件末尾。 BeforeClean
和AfterClean
是目标解释的目标:
http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx
您应该能够在目标中放置删除任务。
修改强> 刚刚测试了这个(右键单击项目 - >卸载 - >右键单击 - >编辑),您需要以下目标:
<Target Name="AfterClean">
<Delete Files="$(TargetDir)\*.txt" />
</Target>
当你清理项目而不是解决方案时,这是有效的 - 它可以工作但不是100%。
答案 1 :(得分: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解决方案中的文件,这样当我对源代码控制中的内容进行差异处理时,就不会混淆我的鼻涕。
答案 2 :(得分:9)
您可以使用内置的删除功能来执行通配符。
<Target Name="AfterClean">
<ItemGroup>
<FilesToDelete Include="$(TargetDir)\*.txt"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
</Target>
答案 3 :(得分:2)
我认为Visual Studio 2017会发生一些变化。
适用于标签:AfterTargets =&#34;清洁&#34;
<Target Name="AfterClean" AfterTargets="Clean">
<!-- Remove bin folder -->
<RemoveDir Directories="$(TargetDir)" />
<!-- Remove obj folder -->
<RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" />
</Target>
答案 4 :(得分:2)
关于 AfterTargets 的提示,请给@ scrat789提示。
对于VS 2017,v15.6.0预览版2.0,我最终得到以下内容:
<Target Name="MyDistClean" AfterTargets="Clean">
<Message Text="Deleting wwwroot\dist files" Importance="high" />
<Delete Files="$(ProjectDir)\wwwroot\dist\*.*" ContinueOnError="true" />
</Target>
一些事情:
这里的任务已经改进,以便在清理时删除webpack dist目录:
<Target Name="MyDistClean" AfterTargets="Clean">
<ItemGroup>
<DistDir Include="$(ProjectDir)wwwroot\dist" />
</ItemGroup>
<Message Text="Deleting @(DistDir)" Importance="high" />
<RemoveDir Directories="@(DistDir)" />
</Target>
答案 5 :(得分:1)
您可以更新csproj文件以指定新目标。你必须在文本编辑器中使用它。
请查看此处的文档:How to: Extend the Visual Studio Build Process。
您将特别更改<Target name='AfterClean'>