首页 > 解决方案 > 由于 Git 子模块上的 $(SolutionDir) 宏,Azure DevOps Pipelines 找不到项目文件路径

问题描述

由于 Git 子模块上的 $(SolutionDir) 宏,Azure DevOps Pipelines 找不到项目文件路径。

我为 Solution1.sln 运行下面的构建任务,该解决方案包括从 Git 子模块签出的几个项目。

其中一个 Git 子模块是一个解决方案 (Solution2.sln),它也有自己的项目从 Git 子模块中检出。

当 MSBuild 任务针对 Solution2.sln 运行时,它找不到项目文件路径,因为项目文件 (.csproj) 使用 $(SolutionDir) 在本地工作正常,因为 Visual Studio 知道 $(SolutionDir) = Solution2.sln 路径。

但是,在 Azure DevOps 中,MSBuild 认为 $(SolutionDir) 是 Solution1.sln 路径。

如何强制 Azure DevOps 中的 MSBuild 尊重与当前正在构建的解决方案 (Solution2.sln) 相对应的 $(SolutionDir) 宏,而不是作为任务输入 (Solution1.sln) 传递的解决方案?

steps:
- checkout: self
  submodules: recursive
  persistCredentials: true

- task: VSBuild@1
  inputs:
    solution: 'Solution1.sln'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
    platform: 'Any CPU'
    configuration: 'Release'

标签: azuregit-submodulesmsbuild-taskazure-devops-pipelinesazure-task-groups

解决方案


推荐阅读