XmlSerializer '不支持编译 JScript/CSharp 脚本'

Posted

技术标签:

【中文标题】XmlSerializer \'不支持编译 JScript/CSharp 脚本\'【英文标题】:XmlSerializer 'Compiling JScript/CSharp scripts is not supported'XmlSerializer '不支持编译 JScript/CSharp 脚本' 【发布时间】:2021-11-25 23:21:46 【问题描述】:

我打算序列化一个二维数组。按照建议here 将其提供为锯齿状数组,并从锯齿状数组中组合回来:

        [XmlIgnore]
        public Rational[,] tab;

        public Rational[][] Data
        
            get 
            
                Rational[][] dt = new Rational[tab.GetLength(0)][];
                for (int i = 0; i < tab.GetLength(0); i++)
                
                    dt[i] = new Rational[tab.GetLength(1)];
                    for (int j = 0; j < tab.GetLength(1); j++)
                        dt[i][j] = tab[i, j];
                
                return dt;
            
            set
            
                tab = new Rational[ value.Length, value[0].Length ];
                for (int i = 0; i < tab.GetLength(0); i++)
                    for (int j = 0; j < tab.GetLength(1); j++)
                        tab[i, j] = value[i][j];
            
        

Rational 类型表示一个分数,可以是十进制 floata/b 整数分数格式。我对Rational做了单独序列化,这个类型没有问题。 我在构造 XmlSerializer 的地方得到了这个异常: 正好扔在这个地方:

        XmlSerializer serializer = new XmlSerializer(typeof(SistemEcuatii));

这是包含序列化程序的代码

    class SistemEcuatiiModel
    
        string baza;
        XmlSerializer serializer = new XmlSerializer(typeof(SistemEcuatii));
        SistemEcuatii data;
        public void WriteTo()
        
            TextWriter writer = new StreamWriter(baza);
            serializer.Serialize(writer, data);
            writer.Close();
        
        void LoadFromFile()
        
            StreamReader streamer = new StreamReader(baza);
            SistemEcuatii dt = (SistemEcuatii)serializer.Deserialize(streamer);
            streamer.Close();
            data = dt;
        

在互联网上搜索类似信息并没有提供一些有用的信息:net-core-3-1-soap-platform-not-supported-error-compiling-jscript-csharp-scriptDocs dot microsoft dot com 我尝试了github issues 的建议,但仍然无法正常工作

【问题讨论】:

【参考方案1】:

github issues 的建议有效,不用担心

        [XmlArrayItemAttribute(typeof(Rational[]))]
        public Rational[][] Data
        
            get 
            

【讨论】:

以上是关于XmlSerializer '不支持编译 JScript/CSharp 脚本'的主要内容,如果未能解决你的问题,请参考以下文章

使用不带属性的 DataContractSerializer 或 XmlSerializer 删除所有命名空间

JavaScript 在CMD文件中运行JScr​​ipt

C# XmlSerializer DefaultAttribute 属性仍然为 nullables 序列化

C# 在 XmlSerializer 中使用结构而不创建单独的 xml 节点

c# XmlSerializer 反序列化器缺少默认命名空间

如何使用 XmlSerializer 序列化内部类?