我有下面的构建脚本,它不使用Azure Devops构建管道。生成解决方案后,我将尝试从bin文件夹中删除一个特定的DLL,该文件夹在本地工作,但在构建管道中不起作用。
<PropertyGroup>
<PostBuildEvent>
cd $(TargetDir)
del Sample.dll
</PostBuildEvent>
</PropertyGroup>构建解决方案定义
steps:
- task: VSBuild@1 displayName: 'Build solution' inputs:
solution: '$(Parameters.solution)'
vsVersion: 15.0
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)\\" /p:Configuration=Release'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
maximumCpuCount: true删除
steps:
- task: DeleteFiles@1
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: |
\Sage.Common.LinqBridge*\
\Sage.Common.LinqBridge.dll*\发布
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
ArtifactName: '$(Parameters.ArtifactName)'
condition: succeededOrFailed()解决方案:谢谢 @Levi MSFT帮助我解决这个问题。
在delete任务中,更改delete模式有效。对于参考文献,
steps:
- task: DeleteFiles@1
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**\Sage.Common.LinqBridge.dll'发布于 2019-08-26 05:43:08
从生成管道中的bin文件夹中删除DLL。
我已经创建了一个用于测试的示例,它在我这边运行得很好。
为了解决这个问题,我想提供以下解决办法:
PostBuildEvent是否已成功执行。/property:Configuration=Release
更新:
根据错误日志,我们可以知道您正在发布项目并删除post build事件中的一个.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)并且不能通过delete任务删除.zip中的文件。
若要解决此问题,可以将该dll文件的Copy Local设置为False。
Update2:
与mbharanidharan88交谈后,发现出现此问题的原因是在删除任务的内容中没有使用正确的语法。
要只删除bin文件夹中的文件,可以使用以下语法:
**\bin\Sage.Common.LinqBridge.dll希望这能有所帮助。
https://stackoverflow.com/questions/57627919
复制相似问题