I was just reading some of the questions posted here about having to declare variables for every package. This got me to thinking that there should be a better way to manage that sort of thing. One possible solution would be a hierarchical key/value store for variables. For instance, a variable declared at the server level would be available for use by all projects, packages, etc… and could be overwritten per project or per package as necessary with the overridden value applying to everything below it in the hierarchy.
See below for a fairly contrived example.
Server (ex. Company name specified here?)
|->Project 1 (ex. Project name specified here to apply for all environments)
| |->Environment 1 (ex. connection strings by name here to apply for all packages)
| | |->Package 1
| | |->Package 2
| |->Environment 2 (ex. connection strings by name here to apply for all packages)
| |->Package 1
| |->Package 2
|->Project 2 (ex. Project name specified here to apply for all environments)
| |->Environment 1 (ex. connection strings by name here to apply for all packages)
| | |->Package 1
| | |->Package 2
| |->Environment 2 (ex. connection strings by name here to apply for all packages)
| |->Package 1
| |->Package 2