Nant delete任务不存在';t删除msbuild后的文件

Nant delete任务不存在';t删除msbuild后的文件,msbuild,nant,delete-file,Msbuild,Nant,Delete File,使用Nant 0.92(之前为0.85,结果相同) 我正在尝试调用NAnt中的删除任务,以便在调用msbuild后删除除.dll文件以外的所有文件(请参阅下面的脚本..我指的是“build”目标中的删除)。删除任务似乎没有执行 初始删除任务工作正常,其行为符合预期,从指定的生成目录中删除所有文件。但是,编译之后的第二个删除任务不起作用 我尝试过删除所有内容(不使用exclude标记),尝试过显式地将failonerror和verbose设置为true。所有这些都不起作用。我还尝试在执行删除任务之

使用Nant 0.92(之前为0.85,结果相同)

我正在尝试调用NAnt中的删除任务,以便在调用msbuild后删除除.dll文件以外的所有文件(请参阅下面的脚本..我指的是“build”目标中的删除)。删除任务似乎没有执行

初始删除任务工作正常,其行为符合预期,从指定的生成目录中删除所有文件。但是,编译之后的第二个删除任务不起作用

我尝试过删除所有内容(不使用exclude标记),尝试过显式地将failonerror和verbose设置为true。所有这些都不起作用。我还尝试在执行删除任务之前使用sleep停止进程,以防msbuild中的某些内容没有及时释放文件进行删除。我试着把删除放在一个单独的目标中,但仍然没有成功

该命令显然在调用msbuild之前工作,如果尝试从msbuild输出目标以外的目录中删除(即复制输出文件,然后删除相关文件),则在msbuild之后工作

我确信这是一个太基本的问题,不可能是一个bug,但我想我还是会问。当然,我会在将文件复制到其他位置的同时使用变通方法,删除我不需要的内容,然后进行适当的移动,但我对此很好奇

我怀疑,除非这种行为是通过设计(尽管在NAT文档中找不到任何建议),那么msbuild进程可能会锁定输出文件,直到NAT进程完成?这是我最好的猜测。如能进一步了解,将不胜感激

编辑:另外,如果显式设置了msbuild的\OutputPath开关,则不会出现相同的问题。只有在使用默认OutputPath时,才会出现问题

NAnt生成文件:

<?xml version="1.0" encoding="utf-8" ?>
<project name="Reports.TestBench.PreBuild" default="postbuild.cleanup" basedir="." xmlns="http://nant.sourceforge.net/release/0.86-beta1/nant.xsd">
    <property name="nant.settings.currentframework" value="net-4.0" />
    <property name="project.StandardReports" value="${project::get-base-directory()}\Reports.StandardReports\Palladium.Reports.StandardReports.csproj" />
    <property name="output.Dir" value="${project::get-base-directory()}\bin\debug\"/>
    <property name="build.Type" value="debug"/>

    <!--Deletes the pre-existing build files-->
    <target name="clean">
        <delete>
          <fileset basedir="${output.Dir}">
            <include name="*.*" />  
          </fileset>
        </delete>
    </target>

    <!--Builds the projects to the specified build directory-->
    <target name="build" depends="clean" description="Build the Palladium Reports Standard Reports application">
        <msbuild project="${project.StandardReports}">
            <arg value="/p:Configuration=${build.Type}" />
            <!--arg value="/p:OutputPath=${path::get-full-path(buildDir.Client)}\Reports" /-->
            <arg value="/t:Rebuild" />
        </msbuild>

        <delete failonerror="true" verbose="true">
          <fileset basedir="${output.Dir}">
            <include name="*.*" />
            <exclude name="Palladium.Reports.StandardReports.dll" />
          </fileset>
        </delete>
    </target>
</project>

尝试插入NAnt源代码-最有可能的是
msbuild
任务创建了一个msbuild引擎,并且不会强制它在之后关闭文件。尽管查看了MSDN文档,但我并没有真正找到一种方法—MSBuild构造缺少
Dispose()
函数。在类上有一个终结器,例如,因此可以通过在应用程序域中运行并随后关闭整个域来强制它释放文件句柄-这是一项相当多的工作。

创建标记Wiki时,请在批量复制文本时在条目末尾指定源。您因抄袭文本而被拒绝了许多建议,例如:您是否可以尝试将msbuild更改为文件副本,因此流程为delete、copy、delete?如果这样做有效,那么我们知道问题确实与msbuild任务有关
  [msbuild] Build succeeded.
  [msbuild]     0 Warning(s)
  [msbuild]     0 Error(s)
  [msbuild] 
  [msbuild] Time Elapsed 00:00:03.19

BUILD SUCCEEDED

Total time: 3.5 seconds.