与复制其文件的NuGet包相关的项目发布构建事件的执行顺序是什么?我有一个NuGet包将不必要的文件复制到我的输出目录(有两个DLL和EXE,在我的情况下我不需要后者)。
的通常想法del /f /q "$(TargetDir)directory\*.exe"
不起作用,很可能在VS(MSBuild)实际复制这些文件之前调用它。
答案 0 :(得分:1)
很可能在VS(MSBuild)实际复制这些文件之前调用它。
根据评论中的信息:
<Target Name="CopyNativeBinaries" AfterTargets="Build">
,这是 来自包目标文件。
此导入MSBuild目标将在构建完成后执行复制任务,这会导致构建后的删除命令行失败。这就是CopyNativeBinaries
目标在PostBuildEvent
之后四步走的原因。
要解决此问题,我们可以使用目标CopyNativeBinaries
之后的订单将构建后事件命令行转换为目标:
详细步骤:
卸载您的项目。然后在项目的最后,就在结束标记之前,放在脚本下面:
<Target Name="DeleteFile" AfterTargets="CopyNativeBinaries">
<ItemGroup>
<FileToDelete Include="$(TargetDir)directory\*.exe"/>
</ItemGroup>
<Exec Command="del /F /Q "@(FileToDelete)""/>
</Target>
完成此设置后,DeleteFile
将在目标CopyNativeBinaries
之后执行。
答案 1 :(得分:1)
这对我有用(MSBUILD v15)
<Target Name="BeforeClean">
<Exec Command="del /F /Q $(TargetDir)*.exe"/>
<Exec Command="del /F /Q $(TargetDir)*.example"/>
</Target>