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

使用Microsoft.Build.Evaluation.Project加载csproj时遇程序集加载异常求助

问题原因与解决方案

核心原因

你遇到的问题是Microsoft.Build NuGet包依赖不完整,且可能存在架构匹配问题:17.x版本的Microsoft.Build需要配套的Microsoft.Build.Framework等组件,单独引用Microsoft.Build会导致依赖缺失;同时x86和x64版本的.NET环境混用,也会触发组件加载失败。

解决步骤

1. 安装完整的MSBuild依赖包

只装Microsoft.Build不够,必须同时安装以下同版本的NuGet包:

  • Microsoft.Build(17.9.5)
  • Microsoft.Build.Framework(17.9.5)
  • Microsoft.Build.Utilities.Core(17.9.5)
  • Microsoft.Build.Tasks.Core(17.9.5)
    确保所有包版本完全一致,避免版本冲突。

2. 统一项目与运行时架构

  • 检查工具项目的目标平台:右键项目 → 属性 → 生成 → 目标平台,选择x64(对应C:\Program Files\dotnet的64位SDK),如果必须用x86则切换到C:\Program Files (x86)\dotnet的32位环境,不要混合架构。
  • 运行工具时,确保使用对应架构的dotnet命令,比如x64环境用C:\Program Files\dotnet\dotnet.exe启动。

3. 手动指定MSBuild路径(兜底方案)

如果自动加载还是失败,直接指定本地SDK中的MSBuild路径初始化ProjectCollection,绕开依赖加载问题:

// 替换为你安装的.NET 6 SDK对应的MSBuild路径
var msbuildToolPath = @"C:\Program Files\dotnet\sdk\6.0.420\MSBuild\Current\Bin";
var projectCollection = new ProjectCollection(new Dictionary<string, string>
{
    { "MSBuildToolsPath", msbuildToolPath },
    { "MSBuildExtensionsPath", msbuildToolPath }
});

// 加载项目
var project = projectCollection.LoadProject(@"你的项目文件路径.csproj");

4. 配置项目的RuntimeIdentifier

在工具项目的csproj中添加明确的RuntimeIdentifier,确保运行时加载对应架构的组件:

<PropertyGroup>
    <!-- 根据目标架构选择,比如win-x64或win-x86 -->
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:42