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

使用System.CodeDom的SourceGenerator运行时报FileNotFoundException原因求解

错误产生的核心原因

该错误是由Roslyn源码生成器的依赖加载机制导致的,具体原因如下:

  • Roslyn源码生成器运行在编译器进程的独立加载上下文中,默认只会加载生成器项目直接输出的程序集,不会自动加载引用的NuGet包对应的第三方依赖dll。你引入的System.CodeDom 5.0.0属于独立NuGet包,不会被自动加入编译器的依赖搜索路径,因此生成器运行时无法找到该程序集。
  • 你当前的项目配置没有将System.CodeDom和生成器本体一起打包,编译器加载生成器时仅识别你的生成器项目输出的dll,缺失对应的依赖文件。
修复方案

你只需修改生成器项目的配置,将System.CodeDom作为生成器的附加依赖打包即可,修改参考如下:

<ItemGroup>
  <!-- 给包引用添加必要属性 -->
  <PackageReference Include="Microsoft.CodeAnalysis" Version="3.8.0" PrivateAssets="all" />
  <PackageReference Include="System.CodeDom" Version="5.0.0" PrivateAssets="all" GeneratePathProperty="true" />
</ItemGroup>

<!-- 将System.CodeDom.dll打包到生成器的分析器目录 -->
<ItemGroup>
  <None Include="$(PkgSystem_CodeDom)\lib\netstandard2.0\System.CodeDom.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>

如果你有其他项目引用的第三方依赖,也按照相同逻辑将对应dll打包到analyzers/dotnet/cs路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:06:02