预建目标未运行

时间:2019-10-26 02:16:21

标签: .net-core azure-devops azure-pipelines

我创建了一个MSBuild目标来还原我的ASP.NET Core应用中的NPM软件包。我以Microsoft自己的Node.js项目模板为目标对它进行建模,尽管我的项目不是Node.js,但它仅对TypeScript def使用NPM包。

构建Azure DevOps管道时,除非我使用 -t:RestoreNode 明确强制使用它,否则它不会运行目标。为什么我的目标在Visual Studio中触发但在DevOps中不触发?这是我的目标:

<Target Name="RestoreNode" BeforeTargets="Build">
  <!-- Ensure Node.js is installed -->
  <Exec Command="node --version" ContinueOnError="true">
    <Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
  </Exec>
  <Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
  <Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
  <Exec Command="npm install" />
</Target>

这是管道:

trigger:
- master

pool:
  vmImage: 'windows-2019'

variables:
  buildConfiguration: 'Release'
  runtimeConfiguration: 'win-x64'

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    arguments: '-t:RestoreNode --configuration $(buildConfiguration) --runtime $(runtimeConfiguration)'

- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: true
    arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory) --runtime $(runtimeConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

1 个答案:

答案 0 :(得分:0)

我无法重现上述情况。 将projects: '**/*.csproj'添加到第一个DotNetCoreCLI@2任务之后。 RestoreNode目标已在我的测试项目中正确执行。

- task: DotNetCoreCLI@2 inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration $(buildConfiguration) --runtime $(runtimeConfiguration)'

我还在任务VSBuild@1下尝试过。它也按预期工作。您可以尝试执行此任务。

- task: VSBuild@1 inputs: solution: '**/*.sln' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)'

下面,我从管道中发布了构建日志:

[command]"C:\Program Files\dotnet\dotnet.exe" build d:\a\1\s\MsBuildTarget\MsBuildTarget\MsBuildTarget.csproj --configuration Release --runtime win-x64

Welcome to .NET Core 3.0!
---------------------
SDK Version: 3.0.100
...
--------------------------------------------------------------------------------------
Microsoft (R) Build Engine version 16.3.0+0f4c62fea for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 7.13 sec for d:\a\1\s\MsBuildTarget\MsBuildTarget\MsBuildTarget.csproj.
  MsBuildTarget -> d:\a\1\s\MsBuildTarget\MsBuildTarget\bin\Release\netcoreapp2.1\win-x64\MsBuildTarget.dll
  v10.16.3
  Restoring dependencies using 'npm'. This may take several minutes...
  npm WARN saveError ENOENT: no such file or directory, open 'd:\a\1\s\MsBuildTarget\MsBuildTarget\package.json'
  npm WARN enoent ENOENT: no such file or directory, open 'd:\a\1\s\MsBuildTarget\MsBuildTarget\package.json'
  npm WARN MsBuildTarget No description
  npm WARN MsBuildTarget No repository field.
  npm WARN MsBuildTarget No README data
  npm WARN MsBuildTarget No license field.