azure-devops - Azure Pipeline - 从具有项目依赖项的解决方案构建一个项目
问题描述
我有一个有几个项目的解决方案。
- 应用程序客户端网站
- App.Client.WindowsService
- 应用程序客户端数据库
- 应用程序客户端连接器
- 应用程序共享
App.Client.Database
和App.Client.Connectors
都是和 的依赖项,App.Client.Website
并且App.Client.WindowsService
是App.Shared
所有项目的依赖项。
我想创建 2 个管道:一个用于网站,一个用于 Windows 服务。
我遇到的问题是,当我将解决方案设置为时App.Client.Website/*.csproj
,它找不到要构建的任何项目引用 - 这对我来说很有意义,但我显然希望它构建我的项目引用为出色地。
我尝试通过为每个将打包 nuget 包的依赖项项目创建管道来解决这个问题,然后我会从我的网站和窗口服务项目的提要中引用该 nuget 包,但这阻止了我调试代码和即时更改这些项目。
DevOps 是我刚刚开始学习的东西。我已经到了需要将内部版本号添加到我的网站应用程序并希望停止手动增加补丁号的地步。我正在使用 YAML 而不是经典管道构建器。
任何和所有的帮助表示赞赏。
YAML 这是我正在使用的 YAML。它只是针对我的网站项目的解决方案的基本 YAML。
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.Client.Website/*.csproj'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '$(solution)'
feedsToUse: 'config'
nugetConfigPath: 'Pipelines/nuget.config'
externalFeedCredentials: 'External Feed'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
repo 文件夹结构在 repo 的根目录下有项目文件夹。
我的网站cs项目文件中的项目引用如下:
<ItemGroup>
<ProjectReference Include="..\App.Client.Database\App.Client.Database.csproj" />
<ProjectReference Include="..\App.Client.Connectors\App.Client.Connectors.csproj" />
<ProjectReference Include="..\App.Shared\App.Shared.csproj" />
</ItemGroup>
这是构建任务的错误:
##[error]C:\Program Files\dotnet\sdk\3.1.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5): Error NETSDK1004: Assets file 'D:\a\1\s\App.Shared\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
解决方案
该问题与NuGet Restore
任务有关,我们可以尝试恢复.sln
文件以恢复所有 NuGet 包,然后构建.csproj
文件。它应该工作。
推荐阅读
- typeclass - 为什么 'neutral' 没有在 List monoid 中标准化为 '[]'?
- reactjs - React + MaterializeCSS + 动态渲染下拉菜单(故障位置)
- ios - 设置后关闭 ShortcutViewController
- firebase - 在firebase中禁用长度密码
- java - Spring:注入任何替代方案
- python - Neo4j 驱动程序在执行查询时关闭连接
- vim - 维姆。如何强制在新标签页中打开文件?
- android - 无法解决 R aapt.exe 以非零退出值 1 和许多其他此类错误完成
- spring - 带有来自本机查询的参数的 Spring 实体动态计算字段
- java - 在 mysql 工作台和 java 应用程序中获取不同的日期值