You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022项目添加架构依赖图后在GitHub/DevOps构建失败(MSB4226)

解决:添加架构依赖图后CI构建失败(MSB4226找不到ModelingProject.targets)

问题说明

项目原本在本地、GitHub、Azure DevOps均可正常构建,添加架构依赖图后,本地构建正常且能正确校验依赖,但GitHub和Azure DevOps构建均失败——即使无依赖错误也会触发失败,报错MSB4226,提示找不到Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets文件。已引入Microsoft.DependencyValidation.Analyzers NuGet包,未找到可移除的ModelingProject.targets相关显式配置,怀疑是隐式引入导致问题。

当前流水线配置

Azure DevOps 构建步骤

parameters:
- name: solution
  default: '**/*.sln'
- name: buildPlatform
  default: 'Any CPU'
- name: buildConfiguration
  default: 'Release'

trigger:
  branches:
    include: 
      - master
pr: none

pool:
  vmImage: 'windows-latest'

steps:
- task: VSBuild@1
  inputs:
    solution: '${{ parameters.solution }}'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
    platform: '${{ parameters.buildPlatform }}'
    configuration: '${{ parameters.buildConfiguration }}'
    msbuildArchitecture: 'x86'

GitHub 流水线(曾尝试切换至windows-latest)

name: .NET

on:
  pull_request:
    branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: 8.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --no-restore
    - name: Test
      run: dotnet test --no-build --verbosity normal
    env:
      ARTIFACTORY_USERNAME: "${{ secrets.DSDWI_ARTIFACTORY_USERNAME }}"
      ARTIFACTORY_PASSWORD: "${{ secrets.DSDWI_ARTIFACTORY_PASSWORD }}"

原因分析

Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets是Visual Studio建模工具组件的一部分,仅随完整VS安装包(包含建模工作负载)提供。本地环境因安装了完整VS组件可正常运行,但CI环境的Windows镜像默认未预装建模工具,Ubuntu镜像完全不支持该组件,导致构建时找不到目标文件。

修复方案

方案1:在CI环境安装建模工具(仅Windows环境适用)

Azure DevOps 调整

在VSBuild任务前添加组件安装步骤:

- task: InstallVisualStudioComponents@1
  inputs:
    packageSelector: 'Microsoft.VisualStudio.Workload.ModelingTools'

GitHub 调整

先切换至windows-latest运行器,再添加VS组件安装步骤:

jobs:
  build:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install VS Modeling Tools
      uses: microsoft/setup-msbuild@v2
      with:
        vs-version: 'latest'
        workloads: 'ModelingTools'
    # 后续的Setup .NET、restore、build步骤保持不变

方案2:禁用CI环境的架构依赖校验

若无需在CI流程中执行依赖图校验,可通过构建参数跳过相关逻辑:

Azure DevOps

在VSBuild的msbuildArgs中添加参数:

msbuildArgs: '... /p:DisableArchitectureValidation=true'

GitHub

修改dotnet build命令:

dotnet build --no-restore /p:DisableArchitectureValidation=true

方案3:清理项目隐式依赖

检查所有项目文件(.csproj)和解决方案文件(.sln),若存在指向建模目标文件的隐式导入配置,手动移除相关行。同时确保Microsoft.DependencyValidation.Analyzers包版本与本地Visual Studio版本兼容。


内容的提问来源于stack exchange,提问作者Jason Coyne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:25:26