.NET 10 - C# compiler "error" in VS debugger. #81170
Answered
by
jasonmalinowski
nathan130200
asked this question in
General
-
|
I opened an discussion because i don't know if this is related to VS2026 debugger or roslyn/C# compiler. Basically if we add any expression to element.TagName
Internal error in the C# compiler
Compiler Exception Type: System.InvalidCastException
Compiler Exception Message: Não é possível converter um objeto do tipo 'PENamedTypeSymbolNonGeneric' no tipo 'Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol'.
Compiler Exception Stack Trace: Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol.Microsoft.Cci.ITypeMemberReference.GetContainingType(EmitContext)+0x76
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker.VisitMethodReference(IMethodReference, EmitContext)+0x0
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker.VisitReference(IReference, EmitContext)+0x36
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.<EmitInstanceCallExpression>g__emitArgumentsAndCallEpilogue|163_2(BoundCall, CallKind, UseKind)+0x0
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitInstanceCallExpression(BoundCall, UseKind)+0x19D
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpressionCore(BoundExpression, Boolean)+0x1CE
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpressionCoreWithStackGuard(BoundExpression, Boolean)+0x0
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitExpression(BoundExpression, Boolean)+0x7D
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitReturnStatement(BoundReturnStatement)+0xF
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement)+0x135
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1)+0x19
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitUninstrumentedBlock(BoundBlock)+0x8D
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement)+0x96
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl()+0x33
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder, MethodSymbol, Int32, BoundStatement, ImmutableArray`1, ImmutableArray`1, ImmutableArray`1, ImmutableArray`1, StateMachineTypeSymbol, VariableSlotAllocator, BindingDiagnosticBag, DebugDocumentProvider, ImportChain, Boolean, ImmutableArray`1, AsyncForwardEntryPoint)+0xF9
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileSynthesizedMethods(TypeCompilationState)+0x125
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileSynthesizedMethods(ImmutableArray`1, BindingDiagnosticBag)+0x61
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(CSharpCompilation, PEModuleBuilder, Boolean, Boolean, Boolean, BindingDiagnosticBag, Predicate`1, CancellationToken)+0x93
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder, Boolean, DiagnosticBag, Predicate`1, CancellationToken)+0x159
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Compile(CommonPEModuleBuilder, Boolean, DiagnosticBag, Predicate`1, CancellationToken)+0x0
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.CompilationContext.TryCompileExpression(CSharpSyntaxNode, String, String, ImmutableArray`1, CompilationTestData, DiagnosticBag, CommonPEModuleBuilder&, EEMethodSymbol&)+0x3C
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.EvaluationContext.CompileExpression(String, DkmEvaluationFlags, ImmutableArray`1, DiagnosticBag, ResultProperties&, CompilationTestData)+0xEB
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler+<>c__DisplayClass6_1.<Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmClrExpressionCompiler.CompileExpression>b__1(EvaluationContextBase, DiagnosticBag)+0x0
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.TryCompileWithRetry<TResult>(ImmutableArray`1, DiagnosticFormatter, CreateContextDelegate, CompileDelegate`1, GetMetadataBytesPtrFunction, TResult&, String&)+0x4B
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.dll!Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler.Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmClrExpressionCompiler.CompileExpression(DkmLanguageExpression, DkmClrInstructionAddress, DkmInspectionContext, String&, DkmCompiledClrInspectionQuery&)+0x0
Microsoft.VisualStudio.Debugger.Engine.dll!Microsoft.VisualStudio.Debugger.EntryPoint.IDkmClrExpressionCompiler_CompileExpression(IntPtr, IntPtr, IntPtr, IntPtr, IntPtr&, IntPtr&)+0x44
mscorlib.dll!System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+0xC
Microsoft.VisualStudio.Debugger.Engine.dll!XapiExceptionProcessing.ThrowHR(Int32, Boolean)+0x14
Microsoft.VisualStudio.Debugger.Engine.dll!Microsoft.VisualStudio.Debugger.Evaluation.DkmLanguageExpression.CompileExpression(DkmClrInstructionAddress, DkmInspectionContext, String&, DkmCompiledClrInspectionQuery&)+0x5D
vsdebugeng.manimpl.dll!VSDebugEngine.ManagedEE.EntryPoint.Microsoft.VisualStudio.Debugger.ComponentInterfaces.IDkmLanguageExpressionEvaluator.EvaluateExpression(DkmInspectionContext, DkmWorkList, DkmLanguageExpression, DkmStackWalkFrame, DkmCompletionRoutine`1)+0x194The code by the way (using .NET with extension members): using System.Diagnostics;
using System.Xml.Linq;
var element = XElement.Parse("<s:foo xmlns:s='urn:xml:foo'><bar/></s:foo>");
Debugger.Break();
element.TagName = "s:bar";
// even after setting TagName property, the exception still throw in debugger window.
// But all changes is done to XElement instance, only throw in debugger, because this i opened an
// discussion instead of an issue and since it don't crash application we can just ignore.
Debugger.Break();
public static class XmlLinqExtensions
{
static string? ExtractPrefix(string s, out int ofs)
{
ofs = s.IndexOf(':');
return ofs > 0 ? s[0..ofs] : null;
}
extension(XElement element)
{
public string TagName
{
get
{
var name = element.Name;
var prefix = element.GetPrefixOfNamespace(name.Namespace);
if (prefix == null)
return name.LocalName;
return string.Concat(prefix, ':', name.LocalName);
}
set
{
var prefix = ExtractPrefix(value, out int ofs);
string localName = ofs > 0 ? value[(ofs + 1)..] : value;
var ns = element.GetNamespaceOfPrefix(prefix ?? string.Empty) ?? XNamespace.None;
element.Name = ns + localName;
}
}
}
} |
Beta Was this translation helpful? Give feedback.
Answered by
jasonmalinowski
Nov 12, 2025
Replies: 1 comment
-
|
We've converted this to an issue -- yes this is the right place: #81171 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
333fred
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
We've converted this to an issue -- yes this is the right place: #81171