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

CSharpCodeProvider中LINQ扩展不可用问题求助

解决C#脚本编译时System.Xml.Linq的引用问题

嘿,我之前也踩过这个坑!你遇到的编译错误,核心原因是System.Xml.Linq是一个独立的程序集,并不是包含在你已经添加的System.Xml或者System.Linq里面的——这俩是完全不同的程序集哦。

下面给你几个具体的解决步骤,应该能搞定:

  • 确保引用正确的程序集
    不管你用的是.NET Framework还是.NET Core/.NET 5+,都需要明确引用System.Xml.Linq.dll(.NET Framework下),或者在.NET Core/现代.NET中确保编译脚本时显式指定这个基础类库组件的引用。

  • 在编译配置中添加程序集引用
    如果你用的是CSharpCodeProvider(旧版编译方式),需要在CompilerParameters的ReferencedAssemblies里添加System.Xml.Linq.dll的路径:

    var parameters = new CompilerParameters();
    parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
    // 别忘加上你已经引用的其他依赖:System.dll, System.Xml.dll, System.Linq.dll等
    

    要是用的是Roslyn(推荐的现代编译方式),则需要通过MetadataReference添加该程序集的引用:

    var compilation = CSharpCompilation.Create("MyScript")
        .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
        .AddReferences(
            MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
            MetadataReference.CreateFromFile(typeof(XDocument).Assembly.Location) // 关键:通过XDocument类型自动定位其程序集
        )
        .AddSyntaxTrees(CSharpSyntaxTree.ParseText(scriptCode));
    
  • 脚本中添加using指令
    别忘了在你的C#脚本开头加上:

    using System.Xml.Linq;
    

    不然即使引用了程序集,代码里还是识别不了XDocument、XElement这些类型。

  • 检查目标框架兼容性
    如果你用的是.NET Framework,要确认引用的System.Xml.Linq.dll版本和你的应用目标框架版本一致;如果是.NET Core/现代.NET,不需要单独下载dll,直接通过类型引用即可(比如上面Roslyn示例里的写法会自动找到正确的路径)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:36:50