Msbuild 从生成管道中的bin文件夹中删除DLL

Msbuild 从生成管道中的bin文件夹中删除DLL,msbuild,azure-devops,post-build-event,Msbuild,Azure Devops,Post Build Event,我有以下构建脚本,它不适用于Azure Devops构建管道。构建解决方案后,我尝试从bin文件夹中删除一个特定的DLL,该DLL在本地工作,但不在构建管道中 <PropertyGroup> <PostBuildEvent> cd $(TargetDir) del Sample.dll </PostBuildEvent> </PropertyGroup> 删除 发表 解决方案: 感谢@Levi Lu MSFT帮助我

我有以下构建脚本,它不适用于Azure Devops构建管道。构建解决方案后,我尝试从bin文件夹中删除一个特定的DLL,该DLL在本地工作,但不在构建管道中

<PropertyGroup>
   <PostBuildEvent>
     cd $(TargetDir)
     del Sample.dll
   </PostBuildEvent>
</PropertyGroup>
删除

发表

解决方案: 感谢@Levi Lu MSFT帮助我解决问题

在删除任务中,更改删除模式有效。因为

从生成管道中的bin文件夹中删除DLL

我已经创建了一个要测试的示例,它在我这方面工作得很好

为了解决此问题,我想提供以下问题解答:

检查生成日志,以了解PostBuildEvent是否成功执行

确保在生成任务中指定了正确的MSBuild参数,如:/property:Configuration=Release:

如果您正在使用专用代理,请确保您具有从专用代理删除文件的权限。或者,您可以使用托管代理对其进行测试

更新:

根据错误日志,我们可以知道您正在发布项目,并在后期生成事件中删除一个.dll文件

如果检查日志,您将发现MSBuild从文件夹obj\Release\Package\PackageTmp\bin而不是bin文件夹获取文件。这就是为什么Sage.Common.LinqBridge.dll在删除后仍然存在的原因

检查日志:

Adding file (d:\a\8\s\xx\xxx\xxx\xxx\obj\Release\Package\PackageTmp\bin\Sage.Common.LinqBridge.dll)
您无法通过删除任务删除.zip中的该文件

要解决此问题,可以将该dll文件的“复制本地”设置为False

更新2:

与mbharanidharan88交谈后,发现此问题的原因是删除任务中的内容没有使用正确的语法

要仅删除bin文件夹中的文件,可以使用以下语法:

**\bin\Sage.Common.LinqBridge.dll

希望这能有所帮助。

PostBuildEvent执行了del命令,但在Artifacts目录中仍然存在相同的dll?@mbharanidharan88,这很奇怪。您能否共享有关生成任务的日志以及有关复制和发布生成任务的生成定义?以下是与生成一起更新的问题definition@mbharanidharan88,谢谢你的快速回复。我已经检查了您的构建日志并找到了这个问题的原因,您可以查看更新的答案以了解更多详细信息。
steps:
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    ArtifactName: '$(Parameters.ArtifactName)'
  condition: succeededOrFailed()
steps: 
- task: DeleteFiles@1 
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)' 
inputs: 
SourceFolder: '$(Build.ArtifactStagingDirectory)' 
Contents: '**\Sage.Common.LinqBridge.dll'
Adding file (d:\a\8\s\xx\xxx\xxx\xxx\obj\Release\Package\PackageTmp\bin\Sage.Common.LinqBridge.dll)
**\bin\Sage.Common.LinqBridge.dll