Hello everybody!
I'm involved in a extension project that includes the need of extending some table methods (DirNameSequence). I've extended DirPerson an DirPersonName with success, new fields and methods anullated with Chain of commands.
I've extended DirNameSequence table, and added some fields.
At this point the solution (only contains the extension project. No other modules in application) compiles and builds OK, as the entire application with the other modules also does.
Now I need to extend some methods of this table DirNameSequence, via Chain of Commands (nameSequence, fixSeparators, calculateSpaces).
I create new class:
[ExtensionOf(tablestr(DirNameSequence))]final public class FydFD_TableDirNameSequence_Extension{}
At this point building is OK. But, when I add some method existing in base table, i.e:
[ExtensionOf(tablestr(DirNameSequence))]final public class FydFD_TableDirNameSequence_Extension{ private void calculateSpaces() { next calculateSpaces(); }}
..and I try to build project, I get:
Error X++ compiler exited unexpectedly with failure code -1. 1
Error Compilation failed. 0
Error Abnormal termination with unhandled exception. Exception key: 4d13d79e-ffdf-4b2a-9626-4ae4226b5580. System.NullReferenceException: Object reference not set to an instance of an object.
at IKVM.Reflection.Universe.IsFromModuleBuilder(Type type)
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
at IKVM.Reflection.Universe.DetermineIfCanonicalizedTypeShouldBePurged(Type type, Func`2 simplePredicate)
at IKVM.Reflection.Universe.<>c__DisplayClass223_0.<PurgeCanonicalizedTypes>b__0(KeyValuePair`2 p)
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Collections.Concurrent.ConcurrentDictionary`2.InitializeFromCollection(IEnumerable`1 collection)
at IKVM.Reflection.Universe.PurgeCanonicalizedTypes(Func`2 simplePredicate)
at IKVM.Reflection.Universe.ClearDynamicAssemblies()
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorMain.UnloadAssemblyFromUniverse()
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorMain.GenerateILImplementation(Parameters parameters, IXppcMetadataProvider metadataProvider, IDiagnosticSink diagnosticsHandler)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorMain.GenerateIL(Parameters parameters, IXppcMetadataProvider metadataProvider, IDiagnosticSink diagnosticsHandler). 0
If I build the new extension module, I get:
Error Abnormal termination with unhandled exception. Exception key: 6b5214ac-49de-4119-a428-79d68d38efea. System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitNextExpression(Object payload, NextExpression nextExpression)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitEvaluation(TPayload payload, Evaluation evaluation)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitEvaluation(Object payload, Evaluation evaluation)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitExpression(Object payload, Expression expression)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitExpressionStatement(TPayload payload, ExpressionStatement expressionStatement)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitExpressionStatement(Object payload, ExpressionStatement statement)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitStatement(TPayload payload, Statement statement)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitStatement(Object payload, Statement statement)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitStatements(TPayload payload, IEnumerable`1 declarationsAndStatements)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitMethod(Object payload, Method method)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitMethodOrDelegate(TPayload payload, MethodOrDelegate methodOrDelegate)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitorWithDiagnostics`2.VisitMethodOrDelegate(TPayload payload, MethodOrDelegate methodOrDelegate)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitMethodOrDelegate(Object payload, MethodOrDelegate methodOrDelegate)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitMethods(TPayload payload, IEnumerable`1 methodOrDelegates)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitMethods(Object payload, IEnumerable`1 methods)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitMethods(TPayload payload, IDictionary`2 dictionary)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitClass(Object payload, Class classInstance)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitClassOrInterface(TPayload payload, ClassOrInterface classOrInterface)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitorWithDiagnostics`2.VisitClassOrInterface(TPayload payload, ClassOrInterface classOrInterface)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitModelElement(TPayload payload, ModelElement modelElement)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorSweeper.VisitModelElement(Object payload, ModelElement modelElement)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitor`2.VisitCompilationUnit(TPayload payload, CompilationUnit compilationUnit)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.AstVisitorWithDiagnostics`2.VisitCompilationUnit(TPayload payload, CompilationUnit compilationUnit)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorPass3Worker.GenerateBodiesInNetmodule(Parameters generatorparameters, String netmoduleName, IXppcMetadataProvider metadataProvider, IDiagnosticSink diagnosticsHandler, NetModuleNameByTypeName netModules, ICrossReferenceProvider xRefProvider)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorPass3Worker.GenerateBodiesInNetmodule(Parameters parameters, String netmoduleName, IXppcMetadataProvider metadataProvider, NetModuleNameByTypeName netModules, FileRollbackHandler fileRollbackHandler, IDiagnosticSink diagnosticsHandler, ICrossReferenceProvider xRefProvider)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorPass3Worker.InvokeInNetmodule(Parameters parameters, String netmoduleName, IXppcMetadataProvider metadataProvider, NetModuleNameByTypeName netModules, FileRollbackHandler fileRollbackHandler, IDiagnosticSink diagnosticsHandler, ICrossReferenceProvider xRefProvider)
at Microsoft.Dynamics.AX.Framework.Xlnt.ILGenerator.ILGeneratorMain.<>c__DisplayClass8_3.<GenerateILImplementation>b__4(String moduleName)
at Microsoft.Dynamics.AX.Metadata.XppCompiler.ParallelCrashDumpUtil.<>c__DisplayClass1_0`1.<ForEach>b__2(T t)
at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object ).
from file K://AosService//PackagesLocalDirectory//FydFDExtension//FydFDExtension//AxClass//FydFD_TableDirNameSequence_Extension.xml (line 0).
The only way of rejecting this error is to delete this method (empty the class), rebuild model, and then rebuild solution. So I can't use methods for this table...
Any ideas?
Thanks in advance
PS: Solution building still gives same error. Only deleting class and recompiling solution + model clears this error. After that, I can recreate the class, but once added some method, errors appear again.