Azure devops Azure管道-从具有项目依赖项的解决方案构建一个项目

Azure devops Azure管道-从具有项目依赖项的解决方案构建一个项目,azure-devops,azure-pipelines,pipeline,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Pipeline,Azure Pipelines Yaml,我有一个有几个项目的解决方案 App.Client.com App.Client.WindowsService App.Client.Database App.Client.Connectors 应用程序共享 App.Client.Database和App.Client.Connectors都是App.Client.Website和App.Client.WindowsService的依赖项,App.Shared是所有项目的依赖项 我想创建两个管道:一个用于网站,一个用于windows服务 我

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

  • App.Client.com
  • App.Client.WindowsService
  • App.Client.Database
  • App.Client.Connectors
  • 应用程序共享
App.Client.Database
App.Client.Connectors
都是
App.Client.Website
App.Client.WindowsService
的依赖项,
App.Shared
是所有项目的依赖项

我想创建两个管道:一个用于网站,一个用于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>

以下是生成任务中的错误:


##[错误]C:\Program Files\dotnet\sdk\3.1.403\Sdks\Microsoft.NET.sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5):错误NETSDK1004:未找到资产文件“D:\a\1\s\App.Shared\obj\project.Assets.json”。运行NuGet包还原以生成此文件

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

你能添加你的YAML管道吗?@KrzysztofMadej更新了我的问题。它主要只是提供的默认模板。既然oy必须构建几乎所有的项目,为什么不使用
***.sln
?Hi@JohZant,您能否共享repo目录结构,然后打开App.Client.Website.csproj search ProjectReference等文件,然后在此处共享项目引用路径?如果路径不正确,我们将看到警告消息:引用的项目“..\App.Client.Connectors\App.Client.Connectors1.csproj”不存在。您好@JohZant,很高兴听到您的问题已经解决。我已经将我的评论转换为一个答案,你可以,它可以帮助其他社区成员谁得到同样的问题,我们可以存档这个线程。谢谢