我创建了一个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'
答案 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.