[Suggestion] Support for multiple projects with deliverable output

Sometimes it is reasonable to collect multiple projects that creates separate deliverables in the same solution.
For our case the concrete use case is feature verticals. I.E We try to do narrow verticals with both server side, client side (and some times other stuff) together. Some UI projects will then depend on several of the Client packages from these vertical projects in order to function. 

Currently the scaffolding project focuses on single project libraries. This suggestion implements support for multiple projects with separate deliverables.

__Overview of changes:__

1. Each project now uses the default output dirs from Visual Studio (bin/Debug, bin/Release), the build process copies the binaries to /bin/[projectName] during build.
2. Documentation generation of reference docs is modified to use the new subfolder structure in the bin folder
3. The nuget task now iterates through the subfolders of the bin folder and generates one nuget package for each project
4. The nuget task now automatically includes any nuget dependencies based on the paket.referense file of each project (if present), and adds it to the package.

These changes should not be breaking for single project libraries (biggest change is one extra folder layer in bin folder), but it enables basic multi project.

__Todo__

This is just an initial suggestion, mainly to get some feedback on whether I'm way off scope (and should keep this stuff in my own fork) or not. So some stuff is still pending, and some changes may need to be made.

1. The nuget dependency thingy might belong in a FAKE.PaketHelper rather than in the project scaffold
2. There is no support for projects with executable deliverables (.exe files)
3. I need to figure out a way of adding nuget dependencies for referenced projects:
If a project references another project in the solution. (IE the UI project references the messaging project) you don't want to have to deal with nuget during dev, but when some other project references the UI project, it should have a dependency on the messaging deliverable.


Not yet, I'm not sure how we extract the selected framework.
On Oct 29, 2014 9:09 PM, "Vidar Løvbrekke Sømme" <notifications@github.com>
wrote:

> In build.template:
>
> > +    | None    -> failwith "Unable to load project file"
> > +
> > +let getNodes (p:ProjectFile) name =
> > +    let query = (sprintf "//ns:%s" name)
> > +    let nodes = p.Document.SelectNodes((sprintf "//ns:%s" name), p.Namespaces)
> > +    match nodes.Count with
> > +    | 0 -> None
> > +    | _ -> Some(nodes)
> > +
> > +let getNode (p:ProjectFile) name =
> > +    match getNodes p name with
> > +    | None -> failwith (sprintf "%s Not found in project file %s" name p.FileName)
> > +    | Some(n) when n.Count > 1 -> failwith (sprintf "More than one element of %s found in project file %s" name p.FileName)
> > +    | Some(n) -> n.[0]
> > +
> > +let getOutputType (d:IO.DirectoryInfo) =
>
> Is target fw also supported somewhere?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/fsprojects/ProjectScaffold/pull/101/files#r19568387>.
>