interactive icon indicating copy to clipboard operation
interactive copied to clipboard

Names of types are not CLS-compliant which prevents `XmlSerializer` to work

Open akade opened this issue 4 years ago • 1 comments

Describe the bug

Names of of Types are not CLS-compliant. Minimal repro:

using System.Xml.Serialization;
public class A{ }
new XmlSerializer(typeof(A));

will result in:

Error: System.ArgumentException: Identifier 'Submission#4' is not CLS-compliant. (Parameter 'ident')
   at System.Xml.Serialization.CodeIdentifier.CheckValidIdentifier(String ident)
   at System.Xml.Serialization.CodeIdentifier.EscapeKeywords(String identifier, StringBuilder sb)
   at System.Xml.Serialization.CodeIdentifier.GetCSharpName(Type t, Type[] parameters, Int32 index, StringBuilder sb)
   at System.Xml.Serialization.CodeIdentifier.GetCSharpName(Type t, Type[] parameters, Int32 index, StringBuilder sb)
   at System.Xml.Serialization.CodeIdentifier.GetCSharpName(Type t)
   at System.Xml.Serialization.TypeDesc.get_CSharpName()
   at System.Xml.Serialization.SourceInfo.CastTo(TypeDesc td)
   at System.Xml.Serialization.XmlSerializationWriterILGen.WriteElements(SourceInfo source, String enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, String arrayName, Boolean writeAccessors, Boolean isNullable)
   at System.Xml.Serialization.XmlSerializationWriterILGen.WriteMember(SourceInfo source, String choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, Boolean writeAccessors)
   at System.Xml.Serialization.XmlSerializationWriterILGen.GenerateTypeElement(XmlTypeMapping xmlTypeMapping)
   at System.Xml.Serialization.XmlSerializationWriterILGen.GenerateElement(XmlMapping xmlMapping)
   at System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace)
   at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location)
   at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace, String location)
   at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
   at System.Xml.Serialization.XmlSerializer..ctor(Type type)
   at Submission#4.<<Initialize>>d__0.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.RunSubmissionsAsync[TResult](ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, StrongBox`1 exceptionHolderOpt, Func`2 catchExceptionOpt, CancellationToken cancellationToken)

Is there a workaround to get XmlSerialization working within a notebook?

Please complete the following:

Which version of .NET Interactive are you using? 1.0.235701+3881a96164de75fca84f5f11027f3606b7878044

  • OS
    • [x] Windows 10
    • [ ] macOS
    • [ ] Linux (Please specify distro)
    • [ ] iOS
    • [ ] Android
  • Browser
    • [ ] Chrome
    • [ ] Edge
    • [ ] Firefox
    • [ ] Safari
  • Frontend
    • [ ] Jupyter Notebook
    • [ ] Jupyter Lab
    • [ ] nteract
    • [x] Visual Studio Code
    • [ ] Visual Studio Code Insiders
    • [ ] Other (please specify)

akade avatar Oct 05 '21 09:10 akade

... and now it's been almost 3 years

mshakurov avatar Jul 29 '24 15:07 mshakurov