Closed GestiSam closed 4 months ago
I have a fix for this. The reason why this happens is quite silly, we're not handling lines that are whitespace-only in the custom XML part of the word document. Usually this XML part is not hand-edited but generated by Word, so usually that assumption is fine but in this case the layout has one such line.
A possible workaround to unblock you while we validate and release the fix is to re-create the word layout. That might be faster than waiting for the fix to be released.
Yes that's what I did, regenerated the layout and copied the content over from the old layout. Thanks for the information about the eventual fix.
The fix for this issue has been checked in to the master branch. It will be available in the bcinsider.azurecr.io/bcsandbox-master Docker image starting from platform build number 25.0.17268.0 and VS Code Extension Version 14.0.958538.
If you don’t have access to these images you need to become part of the Ready2Go program: aka.ms/readytogo
For more details on code branches and docker images please read: https://blogs.msdn.microsoft.com/nav/2018/05/03/al-developer-previews-multiple-releases-and-github/ https://freddysblog.com/2020/06/25/working-with-artifacts/
1. Describe the bug While compiling a report extension with an existing Layout, the compiler gives the current error: Failure while emitting metadata for object:'ReportExtension gsStandardSalesInvoice' (Length cannot be less than zero. (Parameter 'length')))
2. To Reproduce Steps to reproduce the behavior:
tableextension 60100 gsSalesLine extends "Sales Line" { fields { field(60100; gsUnitPriceAfterDisc; Decimal) { Caption = 'Unit price (after discount)'; DataClassification = CustomerContent; Editable = false; } } } reportextension 60101 gsStandardSalesOrderConf extends "Standard Sales - Order Conf." { WordLayout = './src/layout/gsStandardSalesOrderConf.docx'; dataset { add(Line) { column(gsUnitPriceAfterDisc; gsUnitPriceAfterDisc) { } } } } gsStandardSalesOrderConf.docx
3. Expected behavior Compile and get an updated Dataset in the Word File
4. Actual behavior Getting this error: [Error - 10:30:52 AM] Please report this issue to https://github.com/microsoft/al/issues including information on how to reproduce it, if possible. Processing of message 'al/createPackage' failed with error: 'One or more errors occurred. (Failure while emitting metadata for object:'ReportExtension gsStandardSalesInvoice' (Length cannot be less than zero. (Parameter 'length'))) (Failure while emitting metadata for object:'ReportExtension gsStandardSalesOrderConf' (Length cannot be less than zero. (Parameter 'length')))' Details: System.AggregateException: One or more errors occurred. (Failure while emitting metadata for object:'ReportExtension gsStandardSalesInvoice' (Length cannot be less than zero. (Parameter 'length'))) (Failure while emitting metadata for object:'ReportExtension gsStandardSalesOrderConf' (Length cannot be less than zero. (Parameter 'length'))) ---> System.AggregateException: Failure while emitting metadata for object:'ReportExtension gsStandardSalesInvoice' (Length cannot be less than zero. (Parameter 'length')) ---> System.ArgumentOutOfRangeException: Length cannot be less than zero. (Parameter 'length') at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.<>c.b6_0(String line) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 137
at System.Linq.Enumerable.SelectArrayIteratorb0(DiagnosticBag diagnostics) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 226
at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.EmitNonObjectCode(Symbol objectType, Actionb0(Symbol memberSymbol) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 129
--- End of inner exception stack trace ---
at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileModule(ModuleSymbol moduleSymbol) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 140
at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMethodBodies(Compilation compilation, ModuleBuilder moduleBeingBuiltOpt, Boolean hasDeclarationErrors, DiagnosticBag diagnostics, Predicateb 6_0(String line) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 137
at System.Linq.Enumerable.SelectArrayIteratorb__0(Symbol memberSymbol) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 129<---
2.MoveNext() at System.String.Join(String separator, IEnumerable
1 values) at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.FillXmlPartDataWithExtendedInfo(String oldXmlPart) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 128 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.UpdateWordFileIfNeeded(IFileSystem fileSystem, String docName, String officeCustomXmlPart, String officeCustomXmlPart_Extended) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 62 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.GenerateWordLayout(ReportTypeSymbol report, IFileSystem fileSystem, String docName, Compilation compilation) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 37 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportLayoutsGenerator.GenerateLayout(ReportTypeSymbol symbol, ApplicationObjectTypeSymbol declaringSymbol, DiagnosticBag diagnostics, ReportLayoutSymbol layoutSymbol, Action`4 generator) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportLayoutsGenerator.cs:line 46 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportExtensionLayoutsEmitter.Emit(DiagnosticBag diagnostics) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportExtensionLayoutsEmitter.cs:line 21 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.<>cDisplayClass15_0.1 emitter) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 205 --- End of inner exception stack trace --- at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.EmitNonObjectCode(Symbol objectType, Action
1 emitter) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 209 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.PreMetadataEmit(ObjectTypeSymbol containingType) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 221 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileObject(ObjectTypeSymbol containingType) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 189 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.VisitObjectType(ObjectTypeSymbol symbol) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 161 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitApplicationObjectType(ApplicationObjectTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 351 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitApplicationObjectExtensionType(ApplicationObjectExtensionTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 356 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitReportExtensionType(ReportExtensionTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 286 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ReportExtensionTypeSymbol.Accept(SymbolVisitor visitor) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\Symbols.Generated.cs:line 1208 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.<>cDisplayClass11_0.1 filterOpt, Predicate
1 radCompilationFilter, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 103 at Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.CompileImpl(ModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate1 filterOpt, Predicate
1 radCompilationFilter, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:line 1202 at Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.Compile(ModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate1 filterOpt, Predicate
1 radCompilationFilter, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:line 1174 at Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.PackageTheModule(Compilation compilation, CompilerTextWriter consoleOutput, CancellationToken cancellationToken, ErrorLogger errorLogger, AnalyzerDriver analyzerDriver, Predicate1 filterOpt, Predicate
1 radCompilationFilter) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:line 793 at Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.RunCoreImpl(CompilerTextWriter consoleOutput, ErrorLogger errorLogger, Compilation compilation, AnalyzerDriver analyzerDriver, IEnumerable1 analyzerExceptionDiagnostics, IEnumerable
1 additionalTextFiles, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:line 560 at Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.RunCore(CompilerTextWriter consoleOutput, ErrorLogger errorLogger, ITelemetryService telemetryService, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:line 490 at Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.Run(CompilerTextWriter consoleOutput, ITelemetryService telemetryService, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:line 340 at Microsoft.Dynamics.Nav.EditorServices.Protocol.Utility.ActiveProjectBuilder.Build(VsCodeWorkspace workspace, Project builtProject, StreamingTextWriter outputWriter, Boolean isRad, IList1 args, CancellationToken cancellationToken, IResponseQueue responseQueue, ITelemetryService telemetryService, Boolean forceBuild, IList
1 outputFiles, CustomTelemetryEvent telemetryEvent, String requestVsCodeExtensionVersion) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\Utility\ActiveProjectBuilder.cs:line 204 at Microsoft.Dynamics.Nav.EditorServices.Protocol.Utility.ActiveProjectBuilder.BuildWorkspaceAsync(CancellationToken cancellationToken, IFileSystem fileSystem, VsCodeWorkspace workspace, String projectDir, IList1 args, Boolean buildDependencyPackage, Boolean isRad, IResponseQueue responseQueue, Boolean forceBuildOfAllDependencies, CustomTelemetryEvent telemetryEvent, ITelemetryService telemetryService, String vsCodeExtensionVersion) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\Utility\ActiveProjectBuilder.cs:line 115 at Microsoft.Dynamics.Nav.EditorServices.Protocol.LanguageServer.Extensions.CreatePackageRequestHandler.HandleAsync(CreatePackageRequest request, Int32 requestId, CancellationToken cancellationToken) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\LanguageServer\Extensions\CreatePackageRequestHandler.cs:line 37 at Microsoft.Dynamics.Nav.EditorServices.Protocol.MessageProtocol.RequestHandlerBase
1.HandleAsync(JToken requestContents, Int32 requestId, CancellationToken cancellationToken) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\MessageProtocol\RequestHandlerBase.cs:line 84 at Microsoft.Dynamics.Nav.EditorServices.Protocol.RequestRegistry.Process(Message message) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\Endpoints\RequestRegistry.cs:line 106 ---> (Inner Exception #1) System.AggregateException: Failure while emitting metadata for object:'ReportExtension gsStandardSalesOrderConf' (Length cannot be less than zero. (Parameter 'length')) ---> System.ArgumentOutOfRangeException: Length cannot be less than zero. (Parameter 'length') at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.<>c.2.MoveNext() at System.String.Join(String separator, IEnumerable
1 values) at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.FillXmlPartDataWithExtendedInfo(String oldXmlPart) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 128 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.UpdateWordFileIfNeeded(IFileSystem fileSystem, String docName, String officeCustomXmlPart, String officeCustomXmlPart_Extended) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 62 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportWordUtilities.GenerateWordLayout(ReportTypeSymbol report, IFileSystem fileSystem, String docName, Compilation compilation) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportEmitterUtilities\ReportWordUtilities.cs:line 37 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportLayoutsGenerator.GenerateLayout(ReportTypeSymbol symbol, ApplicationObjectTypeSymbol declaringSymbol, DiagnosticBag diagnostics, ReportLayoutSymbol layoutSymbol, Action4 generator) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportLayoutsGenerator.cs:line 46 at Microsoft.Dynamics.Nav.CodeAnalysis.Emit.ReportExtensionLayoutsEmitter.Emit(DiagnosticBag diagnostics) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Emitter\ReportExtensionLayoutsEmitter.cs:line 21 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.<>c__DisplayClass15_0.<PreMetadataEmit>b__0(DiagnosticBag diagnostics) in D:\a\_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 226 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.EmitNonObjectCode(Symbol objectType, Action
1 emitter) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 205 --- End of inner exception stack trace --- at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.EmitNonObjectCode(Symbol objectType, Action`1 emitter) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 209 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.PreMetadataEmit(ObjectTypeSymbol containingType) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 221 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileObject(ObjectTypeSymbol containingType) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 189 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.VisitObjectType(ObjectTypeSymbol symbol) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:line 161 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitApplicationObjectType(ApplicationObjectTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 351 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitApplicationObjectExtensionType(ApplicationObjectExtensionTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 356 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SymbolVisitor.VisitReportExtensionType(ReportExtensionTypeSymbol node) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\SymbolVisitor.Generated.cs:line 286 at Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ReportExtensionTypeSymbol.Accept(SymbolVisitor visitor) in D:\a_work\1\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Generated\Symbols.Generated.cs:line 1208 at Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.<>c__DisplayClass11_0.5. Versions: