Theoretical question about VS solutions

I am learning about deploying custom solutions in VS. The vid course I am taking tells me all about how to do this, but it doesn't really go into why and when one would do this as opposed to just creating solutions in SharePoint Designer.

For example, aside from a situation where a list has to do something custom that cannot be done in the browser or SharePoint Designer, why would someone create a custom list instance in VS via wsp? Also, why would they create a list definition in VS if this can be done in the browser or SP Designer?

For example, the course says that reverse engineering is the way to go rather than write a whole bunch of CAML to create a custom list. So it creates the custom list in the browser, and then imports that list into a VS solution package for either site scope or web scope deployment.

Perhaps a few real world examples of situations where this would be the way to go would be very helpful for me.

It seems like the only benefit in the case of a list instance would be that this list could be activated anywhere on the site. In the case of a list definition, i don't even really see the benefit as this can be created in the browser or SP Designer.

Thanks in advance.
Who is Participating?
Jamie McAllister MVPConnect With a Mentor SharePoint ConsultantCommented:
A list definition in a feature is completely reproducable across environments and site collections, and all fields will have the same names and GUIDs for me to code against.

If you're only going to use a single list instance forever the other methods are fine. If however the list is part of a corporate business solution created in Dev that I'm first going to roll out to test, UAT, and Production then I want a solution that will be identical across those environments.

Also columns and content types are bounded by the Site Collection so once again if I want an identical list created in different Site Collections then Solution is the way to do it.
Rainer JeschorConnect With a Mentor Commented:
in SharePoint designer you can do things easily - but you cannot redo them - meaning as soon as you have a type of Software Development Lifecycle with Dev, Test, UAT/Quality Assurance and Production system, you probably would not like to execute the same manual steps on each and every system.

And second I always like to be able to control things especially when a feature is upgraded to implement a proper way of executing the upgrade process with existing list data.

BobHavertyComhAuthor Commented:
Ok, so it really looks like the real use is to be able reproduce the same thing across sites and site collections, and to be able to change multiple instances of the same thing in one spot or with one set of changes in VS. In a list definition created via the browser or SP Designer, you can have a list definition that can do this, but it can't do this across site collections. Please correct me if I'm wrong. But either way, the answers given were good enough and obviously correct. I suspected what was said, but I needed confirmation for my ideas as I want to be sure that I understand this correctly. Thanks guys.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.