Project fails on creating Help 1.x file

Topics: Bugs, Help 1.x/2.x
Mar 4, 2009 at 8:43 PM
Edited Mar 4, 2009 at 9:06 PM

Good Day Everyone!

We are attempting to use SandCastle (2.4.10520.1) and DocProject (1.11.0.0)  to generate both a DocProject Website and the related CHM for a software project we are working on internally.

Using the initial DocProject wizard we were able to build the project and it compiles without issue on Windows Vista with Visual Studio 2008.

However when attempting to build the same project on our CruiseControl.Net server using MSBuild the process a) takes 45+ minutes where it only takes 10 minutes or less on our workstations and b) errors on "Step 7 of 10: Build Assembler {sandcastle.help1x.config}".  We've seen the error:

C:\Program Files\Dave Sexton\DocProject\bin\DaveSexton.DocProject.targets(40,5) : CopyFromIndexComponent error : An access error occured while attempting to load the file 'C:\Projects\cc.net\SOMEPROJECT\Trunk\Source\doc\Documentation\buildhelp\assembler\reflection.xml'.

We've also seen what appears to be the MSBuild.exe use up all available memory and processor time on this Step 7.  When I mean all available memory, I mean roughly around 900 megabytes of memory.  We've also seen that after 45 minutes the process dies.  Unfortunately, when that happened we just logged out and didn't record the full error message.  I'm recompiling and will post the error message if it appears.

To be honest, this is not an extremely huge project - and we've seen it compile fine on our desktop machines.  For the record, the CruiseControl.Net server is Windows 2003 Server running as a MS Virtual Machine on a dual core server with 2 gigabytes of memory and plenty of drive space.  We've allocated 1280 megabytes of RAM to this Virtual Server.

Up to this point, no other steps have failed or given warnings in anyway.  Frankly - I'm stumped.  I'm hoping that the fine people reading this may have some things we can try.

One thing we've already tried was to remove the compilation of the Help 1.x file.  When disabling Help 1.x in the DocProject Properties or even regenerating the project through the wizard and stating that we don't want the Help 1.x file generate -- we still see Step 7 of 10 and the process crashes.  It appears that we can't turn off the generation of the Help file.  If someone knows where in the code to edit that - please let me know as it will allow us to move on.

Thank you!

Logically Yours,
Rogue

Coordinator
Mar 4, 2009 at 9:24 PM
Hi Rogue,

The full error message might be useful, so please do try to get that.  You can also look in the Windows Application event log for events with DocProject as the source.  (How To Diagnose and Resolve Issues, Application Event Log)

If possible, you could try building the project using MSBuild on the command-line to make sure that it works on that particular machine.  (How To Build Compiled Help With MSBuild)

Disabling Help 1.x doesn't disable Sandcastle's BuildAssembler tool, it simply disables the compilation of a .chm from the HTML files that Sandcastle generates.  The HTML files are still generated, and it's BuildAssembler that does most of the work.  Typically this step will use up much of the processor time and system memory during a help build, although it does seem strange for there to be such a major difference between dev computers and a build server.  Are you sure that the dev computers are building the complete documentation set without any problems?

- Dave
Mar 5, 2009 at 1:18 PM

Surprise, surprise!

After I posted, I started the MSBuild for the DocProject on our CruiseControl server.  I *assumed* that it would return the error after a bit of time.  However, imagine my surprise what it not only passed step 7, but completed the compile...  in 1 hour 17 minutes.  We have over 29,000 entries because it appears to be enumerating a 3rd party data layer which we are using.

Strangely enough, when compiling through Visual Studio 2008, we only have 938 entries and the 3rd party data layer is not enumerated.

The MSBuild command line I'm using is:

"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:Configuration=Release /v:Normal Documentation.csproj

Anyone know if there is an MSBuild parameter which I'm missing that would cause this issue?

Mar 5, 2009 at 2:01 PM
Specifically, in Visual Studio 2008 I see this:

Step 2 of 12: Execute MRefBuilder

C:\Program Files\Sandcastle\ProductionTools\MRefBuilder /config:"C:\Projects\SOMEPROJECT\doc\Documentation\Help\Presentation\Style\Configuration\MRefBuilder.config" /out:reflection.org /internal- /dep=...bunches of assemblies...

MrefBuilder (v2.4.10520.1)
Copyright c Microsoft 2006
Info: Loaded 1 assemblies for reflection and 34 dependency assemblies.
Info: Wrote information on 19 namespaces, 70 types, and 441 members

 

And in MSBuild I see this:

Step 2 of 10: Execute MRefBuilder
MrefBuilder (v2.4.10520.1)
Copyright c Microsoft 2006

C:\Program Files\Sandcastle\ProductionTools\MRefBuilder /config:"C:\Projects\cc.net\SOMEPROJECT\Source\doc\Documentation\Help\Presentation\Style\Configuration\MRefBuilder.config" /out:reflection.org /internal- /dep=...bunches of assemblies...

Info: Loaded 5 assemblies for reflection and 30 dependency assemblies.
Info: Wrote information on 134 namespaces, 1806 types, and 17976 members

 

It should be noted that the project in question which Visual Studio and MSBuis are compiling is identitical and under source control - even though the results are different.

Coordinator
Mar 5, 2009 at 2:16 PM
Hi,

Are you using an external source that is a directory or a wildcard?  Maybe CC is dumping the third-party assemblies into the same folder and DocProject is picking them up.

I'd be interested in seeing the actual paths of the source assemblies.  The list of assemblies you've excluded from your post contains the dependencies that DocProject has detected, which appear after the /dep: switch, and also the source assemblies, which appear after the dependencies.  Check the paths to the source assemblies to see where they're located.

- Dave
Mar 5, 2009 at 2:50 PM

When using MSBuild, the following dependancies are used...

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Security\2.0.0.0__b03f5f7f11d50a3a\System.Security.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Design\2.0.0.0__b03f5f7f11d50a3a\System.Design.dll
C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll
C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll
C:\WINDOWS\assembly\GAC_32\System.Transactions\2.0.0.0__b77a5c561934e089\System.Transactions.dll
C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll
C:\WINDOWS\assembly\GAC_MSIL\System.DirectoryServices\2.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Remoting\2.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll
C:\WINDOWS\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll
C:\WINDOWS\assembly\GAC_MSIL\System.DirectoryServices.Protocols\2.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.Protocols.dll
C:\WINDOWS\assembly\GAC_MSIL\System.ServiceProcess\2.0.0.0__b03f5f7f11d50a3a\System.ServiceProcess.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Configuration.Install\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.Install.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Serialization.Formatters.Soap\2.0.0.0__b03f5f7f11d50a3a\System.Runtime.Serialization.Formatters.Soap.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll
C:\WINDOWS\assembly\GAC_MSIL\Accessibility\2.0.0.0__b03f5f7f11d50a3a\Accessibility.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Web.RegularExpressions\2.0.0.0__b03f5f7f11d50a3a\System.Web.RegularExpressions.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Drawing.Design\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.Design.dll
C:\WINDOWS\assembly\GAC_32\System.Data.OracleClient\2.0.0.0__b77a5c561934e089System.Data.OracleClient.dll
C:\WINDOWS\assembly\GAC\EnvDTE\8.0.0.0__b03f5f7f11d50a3a\EnvDTE.dll
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
C:\WINDOWS\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll
C:\WINDOWS\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll

... then (what I missed before) the following DLL's are used on the MRefBuilder command line...

C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\DevExpress.Data.v8.3.dll
C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\DevExpress.Web.v8.3.dll
C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\DevExpress.Xpo.v8.3.dll
C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\DevExpress.Xpo.v8.3.Linq.dll
C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\Core.dll"

When compiling in Visual Studio 2008, the following dependances are used:

C:\Windows\assembly\GAC_MSIL\DevExpress.Xpo.v8.3\8.3.2.0__b88d1754d700e49a\DevExpress.Xpo.v8.3.dll
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
C:\Windows\assembly\GAC_MSIL\DevExpress.Data.v8.3\8.3.2.0__b88d1754d700e49a\DevExpress.Data.v8.3.dll
C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll
C:\Windows\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll
C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll
C:\Windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll
C:\Windows\assembly\GAC_MSIL\System.Security\2.0.0.0__b03f5f7f11d50a3a\System.Security.dll
C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll
C:\Windows\assembly\GAC_MSIL\System.Design\2.0.0.0__b03f5f7f11d50a3a\System.Design.dll
C:\Windows\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll
C:\Windows\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll
C:\Windows\assembly\GAC_32\System.Transactions\2.0.0.0__b77a5c561934e089\System.Transactions.dll
C:\Windows\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll
C:\Windows\assembly\GAC_MSIL\System.DirectoryServices\2.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll
C:\Windows\assembly\GAC_MSIL\System.Runtime.Remoting\2.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll
C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll
C:\Windows\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll
C:\Windows\assembly\GAC_MSIL\System.DirectoryServices.Protocols\2.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.Protocols.dll
C:\Windows\assembly\GAC_MSIL\System.ServiceProcess\2.0.0.0__b03f5f7f11d50a3a\System.ServiceProcess.dll
C:\Windows\assembly\GAC_MSIL\System.Configuration.Install\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.Install.dll
C:\Windows\assembly\GAC_MSIL\System.Runtime.Serialization.Formatters.Soap\2.0.0.0__b03f5f7f11d50a3a\System.Runtime.Serialization.Formatters.Soap.dll
C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll
C:\Windows\assembly\GAC_MSIL\Accessibility\2.0.0.0__b03f5f7f11d50a3a\Accessibility.dll
C:\Windows\assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll
C:\Windows\assembly\GAC_MSIL\System.Web.RegularExpressions\2.0.0.0__b03f5f7f11d50a3a\System.Web.RegularExpressions.dll
C:\Windows\assembly\GAC_MSIL\System.Drawing.Design\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.Design.dll
C:\Windows\assembly\GAC_32\System.Data.OracleClient\2.0.0.0__b77a5c561934e089\System.Data.OracleClient.dll
C:\Windows\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll
C:\Windows\assembly\GAC_MSIL\DevExpress.Xpo.v8.3.Linq\8.3.2.0__b88d1754d700e49a\DevExpress.Xpo.v8.3.Linq.dll
C:\Windows\assembly\GAC_MSIL\DevExpress.Web.v8.3\8.3.2.0__b88d1754d700e49a\DevExpress.Web.v8.3.dll
C:\Windows\assembly\GAC\EnvDTE\8.0.0.0__b03f5f7f11d50a3a\EnvDTE.dll C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
C:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll

... then the following DLL is used on the MRefBuilder command line...

C:\Projects\cc.net\SOMEPROJECT\Source\src\Core\bin\Release\Core.dll

 

To answer your other question, we are using a wildcard to indicate that DocProject should enumerate all DLL's in the bin directory.  However, the contents of the bin directory are identitical between both machines. 

It appears to me that because the XPO objects are installed in the GAC on the development machine, DocProject does not enumerate them.  While on the CCNet machine, the XPO dll's are not in the GAC so DocProject/SandCastle assumes that they are to be enumerated.

I'm going to shift the DocProject so it only enumates select DLL's and see how that goes.

Mar 5, 2009 at 5:33 PM

Alrighty!  That worked.

I removed my wildcard "bin/*.*" and replaced it with specific references to the DLLs.  It compiles *much* faster on the workstations and finished in under 10 minutes on the CCNet server!

Thanks for the assist!

 

--rogue

Coordinator
Mar 5, 2009 at 6:53 PM
Hi Rogue,

Thanks for the follow-up.  The reason why the assemblies appear in the bin folder on the server is probably because you have Copy Local set to true on each assembly reference.  (This is required if the assemblies are not in the GAC on the server).

Anyway, have you considered using a project reference instead of an external source?  You wouldn't have had this problem in the first place if you used a project reference, and it also gives you the ability to document different solution configurations without having to modify the source locations.  (DocProject will find the appropriate bin folder depending upon the current solution configuration, during help builds, if you use project references as sources).

- Dave
Mar 16, 2009 at 4:58 PM
Hi dev,

while running the docproject form build server i get following error any help on this please

Step 6 Time Elapsed: 00:00:16.4062500
 
  Step 7 of 15: Merge TOC
 
  Creating merged TOC file: D:\TFSTempFolder\ADAMS_Project\ACA R.5\Sources\Source\ADAMS\ACAHelp\buildhelp\merged_toc.xml
  Done.
 
  Included 19 conceptual topic(s).
 
  Step 7 Time Elapsed: 00:00:00.0312500
 
  Step 8 of 15: Create Conceptual Build Files
 
  Creating conceptual build manifest file: D:\TFSTempFolder\ADAMS_Project\ACA R.5\Sources\Source\ADAMS\ACAHelp\buildhelp\conceptual_manifest.xml
  Done.
 
  Created 19 companion XML file(s).
 
  Step 8 Time Elapsed: 00:00:00.3281250
 
  Step 9 of 15: Build Assembler {conceptual.help1x.config}
 
  Preparing...
  Executing...
C:\Program Files\Dave Sexton\DocProject\bin\DaveSexton.DocProject.targets(40,5): ResolveArtLinksComponent error : The art input directory '..\..\Help\Art' does not exist.
 
  Topics processed: 19
 
  Step 9 System.InvalidOperationException: Build Assembler {conceptual.help1x.config}:
  The Sandcastle BuildAssembler step failed.
C:\Program Files\Dave Sexton\DocProject\bin\DaveSexton.DocProject.targets(40,5): Step 9 System.InvalidOperationException: Build Assembler {conceptual.help1x.config}: error : The Sandcastle BuildAssembler step failed.
 
  Total Time Elapsed: 00:01:50.2031250
Done executing task "BuildDocProject" -- FAILED.
Done building target "CoreBuildHelp" in project "ACAHelp.csproj" -- FAILED.
Done Building Project "D:\TFSTempFolder\ADAMS_Project\ACA R.5\Sources\Source\ADAMS\ACAHelp\ACAHelp.csproj" (default targets) -- FAILED.

Thanks for your help as usual
Coordinator
Mar 16, 2009 at 5:25 PM

Hi,

I've responded to your question in your new thread:

http://docproject.codeplex.com/Thread/View.aspx?ThreadId=50347&ANCHOR#Post168613

FYI, your issue is not the same as the issue being discussed here, so please continue the discussion in your new thread.

- Dave