jaykzoo Asked: 2024-10-16 16:07:39 +0800 CST2024-10-16 16:07:39 +0800 CST 2024-10-16 16:07:39 +0800 CST .net 项目在 Azure DevOps 中有多种解决方案 772 我有一个 .net 6 项目,其中包含两个解决方案,我需要将它们放在两个 Azure devops 存储库中。我目前将所有内容放在一个存储库中。但是,我需要为每个解决方案建立构建和发布管道,因为它们的工件将部署到单独的服务器。在项目文件夹中,有两个解决方案之间共享的目录,例如 Lib 和 Packages。如果我将项目分成两个存储库,我应该将共享目录放在哪里?或者我应该将所有内容放在一个存储库中,并尝试构建可以针对每个解决方案的管道? 1 个回答 Voted Best Answer Bright Ran-MSFT 2024-10-16T16:37:25+08:002024-10-16T16:37:25+08:00 您可以尝试按如下方式配置: 创建 3 个存储库(例如repo1、repo2和repo3): repo1存储了第一个解决方案的代码文件。 repo2存储了第二个解决方案的代码文件。 repo3存储共享文件。 在repo1和repo2的构建管道(YAML 管道)中,您可以定义存储库资源来检出共享文件。 resources: repositories: - repository: sharedFiles type: git name: repo3 steps: - checkout: self - checkout: sharedFiles . . . 使用上述配置,如果您运行repo1的构建管道: 步骤“ ”将默认将repo1- checkout: self的文件检出到目录“ ”中。$(Build.SourcesDirectory)/repo1 步骤“ ”将默认把repo3- checkout: sharedFiles的文件检出到目录“ ”中。$(Build.SourcesDirectory)/repo3 “ Build.SourcesDirectory”是构建管道的预定义变量。其值是代理计算机上默认下载源代码文件的绝对路径。 repo2的构建管道中也有类似的行为。 有关更多详细信息,您还可以查看文档“在管道中检出多个存储库”。 编辑: 在签出任务中,您还可以使用path选项设置将文件签出到不同的路径。 例如, resources: repositories: - repository: sharedFiles type: git name: repo3 steps: - checkout: self path: ./s - checkout: sharedFiles path: ./s/packages . . . 如果您使用如上配置运行repo1的构建管道: repo1的文件将被签出到目录“ $(Pipeline.Workspace)/s”中。 repo3的文件将被签出到目录“ $(Pipeline.Workspace)/s/packages”中。 “ Pipeline.Workspace”也是管道的预定义变量,其值也是代理机器上的绝对路径。 “ ”的值$(Pipeline.Workspace)/s与“ ”指向相同的路径$(Build.SourcesDirectory)。但您不能直接将“ $(Build.SourcesDirectory)”用于该选项,因为此选项默认path只接收根目录“ ”的相对路径。$(Pipeline.Workspace) repo2的构建管道中也有类似的行为。
您可以尝试按如下方式配置:
在repo1和repo2的构建管道(YAML 管道)中,您可以定义存储库资源来检出共享文件。
使用上述配置,如果您运行repo1的构建管道:
- checkout: self
的文件检出到目录“ ”中。$(Build.SourcesDirectory)/repo1
- checkout: sharedFiles
的文件检出到目录“ ”中。$(Build.SourcesDirectory)/repo3
Build.SourcesDirectory
”是构建管道的预定义变量。其值是代理计算机上默认下载源代码文件的绝对路径。repo2的构建管道中也有类似的行为。
有关更多详细信息,您还可以查看文档“在管道中检出多个存储库”。
编辑:
在签出任务中,您还可以使用
path
选项设置将文件签出到不同的路径。例如,
如果您使用如上配置运行repo1的构建管道:
$(Pipeline.Workspace)/s
”中。$(Pipeline.Workspace)/s/packages
”中。Pipeline.Workspace
”也是管道的预定义变量,其值也是代理机器上的绝对路径。$(Pipeline.Workspace)/s
与“ ”指向相同的路径$(Build.SourcesDirectory)
。但您不能直接将“$(Build.SourcesDirectory)
”用于该选项,因为此选项默认path
只接收根目录“ ”的相对路径。$(Pipeline.Workspace)
repo2的构建管道中也有类似的行为。