【问题标题】:Azure Pipeline: 'Microsoft.Build.Locator' - An assembly specified in the application dependencies manifest (dnt.deps.json)Azure Pipeline:'Microsoft.Build.Locator' - 应用程序依赖项清单 (dnt.deps.json) 中指定的程序集
【发布时间】:2026-01-30 18:00:02
【问题描述】:

我正在为 CI 构建演示运行以下脚本 https://github.com/RicoSuter/Namotion.Reflection/blob/master/azure-pipelines.yml

trigger:
  branches:
      include:
      - master
      - release
      - refs/tags/*
pr:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  BuildConfiguration: Release
  Projects: '**/*.csproj'

steps:
# Install required SDKs and tools
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    packageType: 'sdk'
    version: '2.2.203'

# Patch preview project versions (only when on master branch)
- task: CmdLine@2
  displayName: 'Install DNT'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  inputs:
    script: 'npm i -g dotnettools'
- task: CmdLine@2
  displayName: 'Update project version patch'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  inputs:
    script: 'dnt bump-versions patch'
    failOnStderr: true
- task: CmdLine@2
  displayName: 'Patch project version preview'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  inputs:
    script: 'dnt bump-versions preview "$(Build.BuildNumber)"'
    failOnStderr: true

# Build and test
- task: DotNetCoreCLI@2
  displayName: 'Build solution'
  inputs:
    command: 'build'
    projects: '$(Projects)'
    arguments: '--configuration $(BuildConfiguration)'
    feedsToUse: 'select'
    versioningScheme: 'off'
- task: DotNetCoreCLI@2
  displayName: 'Run tests'
  inputs:
    command: 'test'
    projects: '$(Projects)'
    arguments: '--configuration $(BuildConfiguration) --collect "Code Coverage"'
    publishTestResults: true
    feedsToUse: 'select'
    versioningScheme: 'off'

# Publish artifacts
- task: CopyFiles@2
  displayName: 'Copy packages'
  condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
  inputs:
    Contents: '**/*.nupkg'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
    flattenFolders: true
- task: PublishBuildArtifacts@1
  displayName: 'Publish artifacts'
  condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

我尝试调整 vmImage 以使用 ubuntu-latest 并调整 npm 命令,使其以“sudo”为前缀,但是在命令 dnt bump-versions patch 我得到以下错误:

##[section]Starting: Update project version patch
==============================================================================
Task         : Command line
Description  : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version      : 2.151.2
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
Generating script.
Script contents:
dnt bump-versions patch
========================== Starting Command Output ===========================
[command]/bin/bash --noprofile --norc /home/vsts/work/_temp/29d33702-3084-4704-851f-a6f76f18f813.sh
DNT (DotNetTools) NPM CLI
Error:
  An assembly specified in the application dependencies manifest (dnt.deps.json) was not found:
    package: 'Microsoft.Build.Locator', version: '1.2.6'
    path: 'lib/netcoreapp2.0/Microsoft.Build.Locator.dll'
child_process.js:660
    throw err;
    ^

Error: Command failed: dotnet "/usr/local/lib/node_modules/dotnettools/bin/binaries/NetCore22/dnt.dll" bump-versions patch
    at checkExecSyncError (child_process.js:621:11)
    at Object.execSync (child_process.js:657:15)
    at /usr/local/lib/node_modules/dotnettools/bin/dnt.js:52:11
    at ChildProcess.exithandler (child_process.js:286:7)
    at ChildProcess.emit (events.js:210:5)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {
  status: 140,
  signal: null,
  output: [ null, null, null ],
  pid: 3784,
  stdout: null,
  stderr: null
}
##[error]Bash exited with code '1'.
##[error]Bash wrote one or more lines to the standard error stream.
##[section]Finishing: Update project version patch

有什么想法吗?我正在关注教程中的这段代码,我对其他 yaml 脚本持开放态度。

【问题讨论】:

    标签: .net azure-devops azure-pipelines


    【解决方案1】:

    您遇到的错误确实是由dotnettools 引起的。

    看到这个DNT#npm-cli-package。可以看到dotnettool的要求是

    .NET Core 2.2+ 或 NetFX 4.7.2 和 Visual Studio 2019

    但是,

    NetFXwindows 独有的。换句话说,如果你继续想使用dotnettool,你不能使用UbuntuMacOs图像,因为NetFXWindows-only

    所以,这里你不能用 Ubuntu 代理应用管道。

    【讨论】:

      最近更新 更多