Build fails with "Illegal characters in path" exception

Jan 16, 2009 at 8:36 AM
Hi,

My build with the GUI app (1.7.0.0) fails with an exception: "Illegal characters in path".

I have several pure .NET assemblies in the project and one mixed C++ assembly. Using the C++ doc comments I am trying to generate some documentation for the assembly but there seems to be a problem with an internal file name. Maybe its the '*' in the type name? (see below)

Here's the last part of the log. The namespace (Jacobi.Vst.Interop.Host) is part of the mixed C++ assembly.

Info: BuildAssembler: Building topic N:Jacobi.Vst.Interop.Host
Info: BuildAssembler: Building topic T:Jacobi.Vst.Interop.Host.UnmanagedArray<double *>
Warn: ShowMissingComponent: Missing <summary> documentation for T:Jacobi.Vst.Interop.Host.UnmanagedArray<double *>

Unhandled Exception: System.ArgumentException: Illegal characters in path.
   at System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str)
   at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
   at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, AccessControlActions control, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
Info: CachedCopyFromIndexComponent: Used "reflection" cache entries: 4
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
Info: CachedCopyFromIndexComponent: Used "comments" cache entries: 3
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
   at Microsoft.Ddue.Tools.SaveComponent.Apply(XmlDocument document, String key)
   at Microsoft.Ddue.Tools.BuildAssembler.Apply(IEnumerable`1 topics)
   at Microsoft.Ddue.Tools.BuildAssembler.Apply(String manifestFile)
   at Microsoft.Ddue.Tools.BuildAssemblerConsole.Main(String[] args)
    Last step completed in 00:01:22.7969
Jan 16, 2009 at 9:18 AM
more info:
When I deselect the types that hase a '*' in their name in the API filter, I get the following exception:

Info: BuildAssembler: Building topic N:Jacobi.Vst.Interop.Host
Info: BuildAssembler: Building topic T:Jacobi.Vst.Interop.Host.UnmanagedArray<double>
Warn: ShowMissingComponent: Missing <summary> documentation for T:Jacobi.Vst.Interop.Host.UnmanagedArray<double>
Info: BuildAssembler: Building topic AllMembers.T:Jacobi.Vst.Interop.Host.UnmanagedArray<double>
Info: ShowMissingComponent: Auto-documenting constructor M:Jacobi.Vst.Interop.Host.UnmanagedArray<double>.#ctor

Unhandled Exception: System.Xml.XmlException: '<', hexadecimal value 0x3C, is an invalid attribute character. Line 1, position 86.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
Info: CachedCopyFromIndexComponent: Used "reflection" cache entries: 4
   at System.Xml.XmlTextReaderImpl.ParseAttributeValueSlow(Int32 curPos, Char quoteChar, NodeData attr)
Info: CachedCopyFromIndexComponent: Used "comments" cache entries: 3
   at System.Xml.XmlTextReaderImpl.ParseAttributes()
   at System.Xml.XmlTextReaderImpl.ParseElement()
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlLoader.ParsePartialContent(XmlNode parentNode, String innerxmltext, XmlNodeType nt)
   at System.Xml.XmlLoader.LoadInnerXmlElement(XmlElement node, String innerxmltext)
   at System.Xml.XmlElement.set_InnerXml(String value)
   at SandcastleBuilder.Components.ShowMissingComponent.CheckForMissingText(XmlNode comments, String key, String tagName)
   at SandcastleBuilder.Components.ShowMissingComponent.Apply(XmlDocument document, String key)
   at Microsoft.Ddue.Tools.BuildAssembler.Apply(IEnumerable`1 topics)
   at Microsoft.Ddue.Tools.BuildAssembler.Apply(String manifestFile)
   at Microsoft.Ddue.Tools.BuildAssemblerConsole.Main(String[] args)
    Last step completed in 00:01:59.5000
Coordinator
Jan 16, 2009 at 3:23 PM
The first problem is probably caused by having the NamingMethod property set to MemberName and I'm not stripping out the '*'.  If so, switch to Guid or HashedMemberName to workaround the problem for now.  The second looks like an issue with the ShowMissingComponent.  You can probably work around that one by setting all the "Show Missing" properties to false for the time being.  If you have a small example you can send me, I can fix up the invalid characters so that the MemberName naming method works and fix the bug in the ShowMissingComponent.  Thanks.

Eric
Jan 18, 2009 at 4:55 PM
Thanks Eric.

I've created an Issue to be able to upload the sample project file and assemlby and documentation files.

http://www.codeplex.com/SHFB/WorkItem/View.aspx?WorkItemId=20654
Coordinator
Jan 18, 2009 at 10:56 PM
The sample is missing the Jacobi.Vst.Core.dll and I can't build it.  Can you attach it plus any others that may be required to get the project to build?

Eric