What is a solution level package?

Sep 3, 2010 at 1:07 AM

I saw the commit what is the scenerio or difference between a project and solution level package?

Sep 3, 2010 at 1:09 AM
Sep 3, 2010 at 1:10 AM

We're still working through the design for this but a solution level package is one that has no content, config changes or references i.e. it might just have tools. MvcScaffold is an example of one of these packages. In this case you don't want Add-Package to add the package to the xml file in the target project, you just want to get it into your solution.

Sep 3, 2010 at 7:29 PM

I am struggling with the solution level package, I can the concept of a mulit project package. One with content files that will go into multiple projects , think about sharp architecture of the headspring architecture.  I sovled this using a multiproject template in the VS project template system, but is was painful.  I think we need a mult project template that has content for multiple projects, or a solution template can contain content that can have multiple project destinations.

Sep 3, 2010 at 7:32 PM

Why you do need a multi-project package? Just do Add-Package project1, Add-Package project2, etc. (or we could try to get Add-Package project1 project2 working, just take each argument and see if it's a project then apply it). I'm not sure I see the scenario that would constitute a package with multiple projects as a target. What is it you're struggling with in a solution level package?

Sep 3, 2010 at 7:37 PM
So I am thinking of a package that could say , bring in a full application stack and add it to say an MVC project.  It would basically setup multiple projects and drop in boilerplate code into the correct projects.  And doing this without forcing a lot of manual steps.
Maybe this scenerio is solved  by creating a solution level meta package, that has dependencies on multiple project packages.  The command in the solution package is something like   Add-SharpArchitecture  
Sep 3, 2010 at 7:41 PM

I can see something like SharpArchitecture.nupack containing everything it needs for this plus adding new .ps1 cmdlets (like xunit does) so you can do Add-Package SharpArchitecture then Add-SharpArchitecture [params] to create a scaffold in the solution. I don't think NuPack should solve the problem of getting everything specific to Sharp into the solution tree, that should be left to tool specific cmdlets (which can interact with the dte themselves and create projects/files).

Sep 6, 2010 at 10:47 PM

That make sense, so a multi project package is a soution package that adds the scripts needed to add functionality to multiple projects.  I think that seems reasonable, without a concrete example of where it breaks down, this seems like feasible.

Sep 7, 2010 at 7:44 AM

Well, I guess it depends on how we define things.  When I say "solution level" and "project level", I'm referring only to NuPack functionality, and not to the additional functionality that the package may bring into the equation.  So in that sense, a solution level package is one where NuPack doesn't change anything in a project, whereas in Project Level it does.  There is no such thing as a multi project package, but any package that has project level things can be installed to multiple projects.

Now if we're talking about the additional functionality that the package brings in (either via .ps1 or exe's), then there is no limit to what it can do in theory.  e.g. it could affect all projects at once, and generally do whatever it wants on the machine.  It's just an 'external tool' doing what it does :)

Sep 7, 2010 at 5:22 PM

This is a great question. Anybody want to volunteer to start a FAQ wiki page and add this question to it (and any others you think will be common)?

Sep 7, 2010 at 5:27 PM

FAQ page created here and added to the home documentation page.

Sep 7, 2010 at 5:27 PM

I can FAQ it up.

Sep 7, 2010 at 5:29 PM

Thanks! Little known fact. When I joined Microsoft, my alias was PHaack. I thought that was pretty phaack-ed up so I changed it to PhilHa. :)