首页 > 解决方案 > Azure Pipeline - 从具有项目依赖项的解决方案构建一个项目

问题描述

我有一个有几个项目的解决方案。

App.Client.DatabaseApp.Client.Connectors都是和 的依赖项,App.Client.Website并且App.Client.WindowsServiceApp.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.

标签: azure-devopsazure-pipelinespipelineazure-pipelines-yaml

解决方案


该问题与NuGet Restore任务有关,我们可以尝试恢复.sln文件以恢复所有 NuGet 包,然后构建.csproj文件。它应该工作。


推荐阅读