VS2017在post build事件中删除NuGet文件

时间:2017-10-28 15:39:45

标签: nuget visual-studio-2017

与复制其文件的NuGet包相关的项目发布构建事件的执行顺序是什么?我有一个NuGet包将不必要的文件复制到我的输出目录(有两个DLL和EXE,在我的情况下我不需要后者)。

的通常想法
del /f /q "$(TargetDir)directory\*.exe"

不起作用,很可能在VS(MSBuild)实际复制这些文件之前调用它。

2 个答案:

答案 0 :(得分:1)

  很可能在VS(MSBuild)实际复制这些文件之前调用它。

根据评论中的信息:

  

<Target Name="CopyNativeBinaries" AfterTargets="Build">,这是   来自包目标文件。

此导入MSBuild目标将在构建完成后执行复制任务,这会导致构建后的删除命令行失败。这就是CopyNativeBinaries目标在PostBuildEvent之后四步走的原因。

要解决此问题,我们可以使用目标CopyNativeBinaries之后的订单将构建后事件命令行转换为目标:

详细步骤:

  1. 删除构建后事件。
  2. 卸载您的项目。然后在项目的最后,就在结束标记之前,放在脚本下面:

    <Target Name="DeleteFile" AfterTargets="CopyNativeBinaries">
      <ItemGroup>
        <FileToDelete Include="$(TargetDir)directory\*.exe"/>
      </ItemGroup>
      <Exec Command="del /F /Q &quot;@(FileToDelete)&quot;"/>
    </Target>
    
  3. 完成此设置后,DeleteFile将在目标CopyNativeBinaries之后执行。

答案 1 :(得分:1)

这对我有用(MSBUILD v15)

<Target Name="BeforeClean">
  <Exec Command="del /F /Q $(TargetDir)*.exe"/>
  <Exec Command="del /F /Q $(TargetDir)*.example"/>
</Target>