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

运行时引用Roslyn代码分析遇程序集加载失败如何解决?

问题描述

我希望在运行时通过Roslyn代码分析检查解决方案和项目,使用了以下代码:

MSBuildLocator.RegisterDefaults();
var workspace = MSBuildWorkspace.Create();
var sln = await workspace.OpenSolutionAsync(solutionPath);

项目的csproj配置如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="7.0.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.7.0" />
    <PackageReference Include="Microsoft.Build.Locator" Version="1.4.1" />
</ItemGroup>

项目编译正常,但运行时抛出错误:

Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp.Workspaces, Version=4.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified

已经尝试添加MSBuild Locator但无效,求解决办法。

解决办法

1. 显式添加缺失的包引用

Microsoft.CodeAnalysis.Workspaces.MSBuild 虽依赖相关组件,但偶尔会因传递性引用问题,导致Microsoft.CodeAnalysis.CSharp.Workspaces未被正确复制到输出目录。直接在csproj中显式添加该包引用,注意版本要与Microsoft.CodeAnalysis.Workspaces.MSBuild保持一致:

<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.7.0" />

2. 清理重建并验证输出文件

  • 执行命令清理项目并重新还原依赖:dotnet clean && dotnet restore
  • 检查项目输出目录(如bin/Debug/net6.0)下是否存在Microsoft.CodeAnalysis.CSharp.Workspaces.dll,若缺失,手动删除obj和bin目录后重新构建。

3. 确保MSBuild Locator调用时机正确

MSBuildLocator.RegisterDefaults()必须是程序启动后第一个执行的代码,要在任何Roslyn相关逻辑之前运行,示例如下:

static async Task Main(string[] args)
{
    MSBuildLocator.RegisterDefaults();
    var workspace = MSBuildWorkspace.Create();
    var sln = await workspace.OpenSolutionAsync(solutionPath);
    // 后续业务逻辑
}

调用时机错误会导致MSBuild环境初始化异常,间接引发程序集加载失败。

4. 检查依赖版本兼容性

确认项目目标框架(net6.0)与Roslyn包版本兼容,4.7.0版本的Roslyn包支持net6.0。执行dotnet list package查看依赖树,排查是否存在其他包版本冲突导致的加载问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:30