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

使用dotnet-script运行C#脚本时出现CLS合规性错误求助

解决dotnet-script中XmlSerializer的CLS合规错误及CS1730问题

问题根源

dotnet-script会把脚本编译成名为Submission#0的动态程序集,这个名称里的#字符不符合CLS(公共语言规范),而XmlSerializer在生成反序列化代码时会校验程序集的CLS合规性,因此抛出Identifier 'Submission#0' is not CLS-compliant错误。

你遇到的CS1730错误,是因为程序集属性[assembly:CLSCompliant(true)]必须放在脚本的最顶部——任何using语句、类定义之前,否则编译器会判定属性位置非法。


解决方案

方案1:指定合法的程序集名称(推荐)

运行dotnet-script时,通过--assembly-name参数指定一个不含特殊字符的合法程序集名称,让动态程序集符合CLS规范,无需修改脚本代码:

dotnet script YourScript.csx --assembly-name MyValidAssemblyName

方案2:正确放置CLS属性+调整XmlSerializer配置

如果无法修改运行命令,先修正属性位置,再通过配置跳过CLS校验:

  1. 把CLS合规属性放在脚本最开头:
[assembly: CLSCompliant(true)]
using System;
using System.Xml.Serialization;
using System.IO;

// 你的模型类
public class FilesModel {
    // 模型属性定义
}

public static FilesModel GetFilesModel(string xmlContent) {
    var serializer = new XmlSerializer(typeof(FilesModel));
    using var reader = new StringReader(xmlContent);
    return (FilesModel)serializer.Deserialize(reader);
}
  1. 若仍报错,改用XmlAttributeOverrides强制跳过CLS校验:
public static FilesModel GetFilesModel(string xmlContent) {
    var overrides = new XmlAttributeOverrides();
    var serializer = new XmlSerializer(typeof(FilesModel), overrides);
    using var reader = new StringReader(xmlContent);
    return (FilesModel)serializer.Deserialize(reader);
}

方案3:替换XmlSerializer为其他序列化库

如果上述方法无效,换用不校验CLS合规的序列化方式,比如DataContractSerializer:

using System.Runtime.Serialization;
using System.Xml;
using System.IO;

[DataContract]
public class FilesModel {
    [DataMember]
    public string FilePath { get; set; }
    // 其他属性
}

public static FilesModel GetFilesModel(string xmlContent) {
    var serializer = new DataContractSerializer(typeof(FilesModel));
    using var reader = new StringReader(xmlContent);
    using var xmlReader = XmlReader.Create(reader);
    return (FilesModel)serializer.ReadObject(xmlReader);
}

本地运行正常的原因

本地直接编译运行时,生成的程序集名称是项目/脚本的合法名称(不含#这类特殊字符),天然符合CLS规范,因此XmlSerializer不会触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:45:50