A bit of a change of tack this week. Rather than writing about something I've been doing, I'd like to ask for your ideas on something I've been thinking about. This issue is way to complex to compress into a tweet to ask on Twitter, and it seems too opinion based to be asked on Stack Overflow. So I'll ask it here, in the hope that some of you clever people might offer your opinions. Comment below, tweet me, write blog posts in response, send carrier pigeons or whatever. All thoughts appreciated...
So here's what I'm thinking about: How do you set up your projects for development?
For all the time I've been working with Sitecore I've followed roughly the same pattern:
The Sitecore databases go into a local instance of SQL Server, and when I need the .Net debugger I attach to the IIS process using the shortcut in Sitecore Rocks.
And then I'll sit and write code, hit build and test until my project is working.
But the other day a colleague of mine made an alternative suggestion to this approach that was different enough to make me stop and think. He's experimenting with Sitecore itself as a NuGet package, and used a different approach to setup and the development process:
And then develop away, without the need for a post-build step to deploy your work. You can hit F5 to compile and debug against IIS Express. And the databases can be attached to LocalDB using the
connection string. All of which means theoretically your entire development setup for a new team member on a project could be "get-latest" from source control. Or alternatively development instances of Sitecore can be copied about between machines and developers via XCopy.
(There's a background issue here that I don't think Sitecore officially supports IIS Express and LocalDB – but as far as I can see, it does seem to work)
Now historically I've been on the "never put your VS Solution into your Sitecore website folder" side of the development process debate. I argued this when I first did Sitecore training many years back (when their trainer was teaching the other way) and I've stuck with this position. It seemed to have numerous benefits to me:
But at the same time, I can see that there are disadvantages to my approach too:
All this has got me thinking. So I'm spending a bit of time considering the implications of all this, and how it might be sensible to adjust my ideas about development processes.
But what do you think Sitecore Community? Where do you all stand on the "right" way to set up a Sitecore development instance? What do you think are the best ways to achieve this setup? Do you have advice would you offer? Any favourite blog posts on the subject of "best ways" to set up your projects?
I'm all ears...