由于 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'