.net-core - 预构建目标未运行
问题描述
我创建了一个 MSBuild 目标来恢复我的 ASP.NET Core 应用程序中的 NPM 包。我在 Microsoft 自己的 Node.js 项目的项目模板目标之后对其进行了建模,尽管我的项目不是 Node.js,它仅使用 NPM 包进行 TypeScript defs。
当我的 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'
解决方案
我无法重现上述情况。添加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.
推荐阅读
- excel - Excel VBA:尝试添加超链接时出现运行时错误 1004 应用程序定义或对象定义错误
- flutter - 无法在 Flutter 中的 PageController 上跳转到页面
- ios - Swift 重复 While 循环最佳实践
- python-3.x - 使用 datetime.strptime() 将字符串转换为日期时间时出错
- reactjs - 在一些 reactjs 逻辑上需要一些帮助
- android - Android 11/R - 使用从后台启动的前台服务开始录制音频/视频(警报接收器)
- tensorflow - 在 GCP 上的 Ubuntu 16.04 实例上运行使用 tensorflow 的烧瓶应用程序,模型运行但预测与本地主机上的不同
- c++ - 为什么这个 C++ 程序没有显示任何输出?
- html - 移动设备上的用户输入和占位符文本对齐
- laravel - 指令名称 [] 无效。指令名称只能包含字母数字字符和下划线