Builder hangs by XML and DLL Sources

Mar 31, 2010 at 4:22 PM

Hi,

I'm using VS2008 for building the helpfiles (CHM and Web).

When I use the *.sln as Sourcefile, then the helpbuilder works.

But now I have a solution with C++ files included and I cannot work with the *.sln.
When I put the *.Xml and *.dll as sourcefiles, the build hangs after creation the files in the Working-Folder.

MrefBuilder.exe has finished
XslTranform.exe has finished
XslTranform.exe (2) (with csc.exe) has finished
The Assembling-Task has finished.
No hhc will start, no executiontime used by the (second) MSBuild.exe.
Then, when I kill the second MSBuild.exe it restarts and then it start the hhc.exe

I put the sourcefiles in a extra-created XML to the builder.
Any Help?

 

Coordinator
Mar 31, 2010 at 8:29 PM

I'm not sure why you're seeing the behavior that you are getting with the assemblies and XML comments as documentation sources.  The build steps don't look right.  For one thing, neither SHFB nor Sandcastle invoke csc.exe and there is no "Assembling-Task".  It could be that you've got a build order issue.  You may need to make the project that invokes SHFB in its post-build step, the final project to build.

In any case, if you can't use the solution file, add the projects you want documented within the solution as documentation sources instead (the .csproj or .vbproj file rather than the .sln file).

Eric

 

Apr 1, 2010 at 9:20 AM

Hi Eric,

thank you for you answer.

I'm not sure why you're seeing the behavior that you are getting with the assemblies and XML comments as documentation sources.  The build steps don't look right.  For one thing, neither SHFB nor Sandcastle invoke csc.exe and there is no "Assembling-Task".  It could be that you've got a build order issue.  You may need to make the project that invokes SHFB in its post-build step, the final project to build.

OK, I will check the command for create the doc. It is normaly started from the commandline over night in a seperate process after the buildprocess.

In any case, if you can't use the solution file, add the projects you want documented within the solution as documentation sources instead (the .csproj or .vbproj file rather than the .sln file).

The solution contains over 140 Projects on different places but only one binary-folder.
It is much easier to handle one solution-file or all dll/xml-files in one folder as so many projectfiles.
This big solution we can also not handle after every build

Apr 1, 2010 at 10:41 AM

Hi Eric,

The build steps don't look right.  For one thing, neither SHFB nor Sandcastle invoke csc.exe and there is no "Assembling-Task"

But the MSBuild-Process uses BuildAssembler.exe and the XslTransform.exe calls csc.exe once.

I start the process with this Arguments:

process.StartInfo.FileName = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
process.StartInfo.Arguments = /p:Configuration=release /p:CustomBeforeSHFBTargets="C:\Projects\AxProduction Root\AxProduction\BuildFolder\Doc_Config_2010-03-31_161640_release.xml" "C:\Projects\AxProductionBuilder\AxProduction.shfbproj"

And in the xml for CustomBeforeSHFBTargets I have defined the  DocumentationSource with the xml/dll filename.

Coordinator
Apr 1, 2010 at 4:18 PM

No, XslTransform does not call csc.exe, that's the C# compiler and all XslTransform does is transform XML files using XSL transformations.  It doesn't compile code of any kind.  If csc.exe is running, then something else is interferring with the build projects.  Perhaps you've got some other tasks or something that are getting invoked somehow.  What's in your CustomBeforeSHFBTargets file?  Are you perhaps inadvertently importing the C# targets file?

Eric

 

Apr 1, 2010 at 5:00 PM

That's in my File:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <BuildLogFile>C:\Projects\AxProduction Root\AxProduction\BuildFolder\Create_Doc_2010-03-31_161640_release.log</BuildLogFile>
    <OutputPath>C:\Projects\AxProduction Root\AxProduction\BuildFolder\Documentation</OutputPath>
    <DocumentationSources>
      <DocumentationSource sourceFile="C:\Projects\AxProduction Root\AXProduction\bin\Debug\Ax.Common.Base.dll" />
      <DocumentationSource sourceFile="C:\Projects\AxProduction Root\AXProduction\bin\Debug\Ax.Common.Base.xml" />
	  ........
      <DocumentationSource sourceFile="C:\Projects\AxProduction Root\AXProduction\bin\Debug\DevExpress.XtraTreeList.v6.1.dll" />
      <DocumentationSource sourceFile="C:\Projects\AxProduction Root\AXProduction\bin\Debug\DevExpress.XtraTreeList.v6.1.xml" />
    </DocumentationSources>
  </PropertyGroup>
</Project>
Maybe it is a error to put in the *.dll ?
Wolfgang
Coordinator
Apr 1, 2010 at 8:18 PM

You probably shouldn't be including the DevExpress assemblies as documentation sources since you probably don't want them documented.  They should be added as references instead.  My guess is that with those assemblies included for documentation BuildAssembler is running much longer than you expect it to and you're killing it before it's actually finished.  Your best bet would be to set up a project using the GUI and add the just the assemblies that you want documented as documentation sources and all other non-documented assemblies as references.  Once you get it building in the GUI, then take a look at the saved project to see how to specify the documentation sources and references in your external file for the command line build.

Eric

 

Apr 6, 2010 at 9:27 AM

Hi Eric,

Your best bet would be to set up a project using the GUI and add the just the assemblies that you want documented as documentation sources and all other non-documented assemblies as references.

Yes, at this way, I got the result. In the GUI.
But I can not add references with the CustomBeforeSHFBTargets-file because the ItemGroup is reserved and can not be changed.

So I will try to read the original *.shfbproj, delete the nodes 'DocumentationSources' and 'ItemGroup', add my files and save it.
Maybe then it woks like I need.

Apr 8, 2010 at 7:54 AM

Hi Eric,

Thank you for your help.

It works now.

Wolfgang.