Visual studio 2010 MSBuild预清理自定义

Visual studio 2010 MSBuild预清理自定义,visual-studio-2010,msbuild,Visual Studio 2010,Msbuild,我在VisualStudio2010工作。我已将项目输出定向到一个特定文件夹,该文件夹在构建时将包含所有DLL和EXE。但是,当我清理解决方案时,文件夹没有被清理,DLL仍然存在于其中 有人能告诉我如何使用clean solution命令来清除我要清理的文件夹吗?我尝试使用MSBuild并处理BeforeClean和AfterClean目标,但未达到预期效果。您可以将名为BuildCustomAction.csproj的特殊目标添加到VS.sln文件中: <?xml version="1.

我在VisualStudio2010工作。我已将项目输出定向到一个特定文件夹,该文件夹在构建时将包含所有DLL和EXE。但是,当我清理解决方案时,文件夹没有被清理,DLL仍然存在于其中


有人能告诉我如何使用clean solution命令来清除我要清理的文件夹吗?我尝试使用MSBuild并处理BeforeClean和AfterClean目标,但未达到预期效果。

您可以将名为BuildCustomAction.csproj的特殊目标添加到VS.sln文件中:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build"     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  </PropertyGroup>

  <ItemGroup>
      <CleanOutCatalogFiles Include="..\..\bin\$(Configuration)\**\*.dll">
         <Visible>false</Visible>
      </CleanOutCatalogFiles> 
      <CleanOutCatalogFiles Include="..\..\bin\$(Configuration)\**\*.exe">
         <Visible>false</Visible>
      </CleanOutCatalogFiles> 
  </ItemGroup>    

  <Target Name="Build">                                 
  </Target>                                            

  <Target Name="Rebuild"
          DependsOnTargets="Clean;Build">                    
  </Target>

  <Target Name="Clean"
          Condition="'@(CleanOutCatalogFiles)'!=''">
    <Message Text="Cleaning Output Dlls and EXEs" Importance="high" />
    <Delete Files="@(CleanOutCatalogFiles)" />
  </Target>
</Project>

调试
任意CPU
假的
假的
将其放置在您想要的任何位置,并为二进制文件指定输出目录的相对路径。加载项VS此项目作为现有项。这就是全部。有了它,您可以为VS中的三个常见操作执行自己的自定义操作:构建重建清理

使用CustomBeforeMicrosoftCommonTargetsCustomAfterMicrosoftCommonTargets自定义生成过程有更复杂的方法,但它要求在MSBuild中非常出色


希望这能有所帮助。

塞尔吉奥的答案应该有效,但我认为覆盖前清洁/后清洁目标可能更干净。这些是microsoft提供的构建/清理过程的挂钩。当你进行清理时,VS会调用目标:BeforeClean;清洁的清理后,默认情况下,第一个和最后一个不执行任何操作

在现有的.csproj文件中,可以添加以下内容:

<Target Name="BeforeClean">
  <!-- DO YOUR STUFF HERE -->
</Target>

+1用于此。只需确保在导入Microsoft.CSharp.targets文件后添加BeforeClean或AfterClean目标,否则它将重新定义BeforeBuild/AfterBuild自定义目标为默认空目标。重新混合回答: