VS hangs during the SHFB build + CCNet does not wait for the msbuild task to finish the SHFB project

Topics: Developer Forum, User Forum
Nov 27, 2009 at 8:44 PM

I have a solution that includes an SHFB project which references the assemblies built by the solution itself.

The SHFB obviously depends from everything else so it is the last to build.

In VS this works quite well, except VS freezes during the SHFB project build. Minor problem.

In CCNet I have one unique msbuild task that builds everything. Here the problem is more serious because the assemblies disappear right before the SHFB project starts building. It's actually very weird. If I break the task into two and build the documentation separately, then everything works fine.

I didn't have the time to put together a test prototype, but perhaps somebody will recognize the symptoms and shed some light?

I suspect there is a problem in the way the SHFB msbuild tasks wait for the child tool processes to exit.

Nov 28, 2009 at 7:58 PM

SHFB projects are not supported within Visual Studio yet.  I'm surprised that it actually builds since the project system doesn't support it and won't load the project in the solution explorer as far as I know.  Regarding your output disappearing, are you placing it in the SHFB project's working folder location?  If so, it will be cleared prior to the build.  Likewise, if you are building a website and your other project output is ending up in the SHFB project's output folder, it will also be cleared since the output folder is cleared prior to copying the final website output to it.



Nov 28, 2009 at 9:26 PM
Edited Nov 28, 2009 at 9:31 PM

well, VS will take an shfbproj with a trick: rename the shfbproj to a csproj, add it to the solution, then chnage the sln in a text editor to make it point to the original shfbproj, and rename that file back (from csproj to shfbproj). Strictly speaking you don't actually even have to rename the reference back to the shfbproj

VS digests all msbuild files: see this link

re where I put files: no I don't put output in the working directory. The tree is a follows

  • src
    • solution.sln
    • documentation.shfbproj
    • projectA
      • projectA.csproj
    • projectB
      • projectB.csproj
  • build
    • $(Configuration)
      • bin
        • projectA.DLL
        • projectA.xml (the xml doc file)
        • ...
      • obj
        • documentation (the shfb working directory)
        • projectA
        • ...