从 Build Pipeline 的 bin 文件夹中删除 DLL
Remove a DLL from the bin folder in the Build Pipeline
我有以下构建脚本,它不适用于 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 Lu-MSFT 帮助我解决问题。
在删除任务中,更改删除模式有效。对于 reference、
steps:
- task: DeleteFiles@1
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**\Sage.Common.LinqBridge.dll'
Remove a DLL from the bin folder in the Build Pipeline
我已经创建了一个示例进行测试,它在我这边运行良好。
为了解决这个问题,我想提供以下故障排除:
查看构建日志,确定PostBuildEvent
是否执行成功。
确保您在构建任务中指定了正确的 MSBuild 参数,例如:/property:Configuration=Release
:
如果您使用的是私人代理,请确保您有从私人代理删除文件的权限。或者您可以使用托管代理对其进行测试。
更新:
根据错误日志,我们可以知道您正在发布项目,并在 post 构建事件中删除了一个 .dll 文件。
如果查看日志,您会发现 MSBuild 从文件夹 obj\Release\Package\PackageTmp\bin
而不是 bin
文件夹中获取文件。这就是为什么删除后 Sage.Common.LinqBridge.dll 仍然存在的原因。
查看日志:
Adding file (d:\a\s\xx\xxx\xxx\xxx\obj\Release\Package\PackageTmp\bin\Sage.Common.LinqBridge.dll)
并且您无法通过删除任务删除 .zip 中的那个文件。
要解决此问题,您可以为该 dll 文件将 Copy Local
设置为 False
。
更新2:
与mbharanidharan88交谈后,发现这个问题的原因是删除任务中的内容没有使用正确的语法。
只删除bin文件夹中的文件,我们可以使用以下语法:
**\bin\Sage.Common.LinqBridge.dll
希望这对您有所帮助。
我有以下构建脚本,它不适用于 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 Lu-MSFT 帮助我解决问题。
在删除任务中,更改删除模式有效。对于 reference、
steps:
- task: DeleteFiles@1
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**\Sage.Common.LinqBridge.dll'
Remove a DLL from the bin folder in the Build Pipeline
我已经创建了一个示例进行测试,它在我这边运行良好。
为了解决这个问题,我想提供以下故障排除:
查看构建日志,确定
PostBuildEvent
是否执行成功。确保您在构建任务中指定了正确的 MSBuild 参数,例如:
/property:Configuration=Release
:如果您使用的是私人代理,请确保您有从私人代理删除文件的权限。或者您可以使用托管代理对其进行测试。
更新:
根据错误日志,我们可以知道您正在发布项目,并在 post 构建事件中删除了一个 .dll 文件。
如果查看日志,您会发现 MSBuild 从文件夹 obj\Release\Package\PackageTmp\bin
而不是 bin
文件夹中获取文件。这就是为什么删除后 Sage.Common.LinqBridge.dll 仍然存在的原因。
查看日志:
Adding file (d:\a\s\xx\xxx\xxx\xxx\obj\Release\Package\PackageTmp\bin\Sage.Common.LinqBridge.dll)
并且您无法通过删除任务删除 .zip 中的那个文件。
要解决此问题,您可以为该 dll 文件将 Copy Local
设置为 False
。
更新2:
与mbharanidharan88交谈后,发现这个问题的原因是删除任务中的内容没有使用正确的语法。
只删除bin文件夹中的文件,我们可以使用以下语法:
**\bin\Sage.Common.LinqBridge.dll
希望这对您有所帮助。