Have you ever
encountered pages/items added to SharePoint library/list via feature with
custom code is not ghostable? This is because when file or page is created
under SP Object Model the SharePoint will save them as instance in content
database. But when you provisioning those files via feature module then they
will become ghosted. When you need a custom to provision file? Such as page is
already existed, that is default page of site or etc.
Some of you may not
know what ghosted mean in plain English,
"A ghosted page is a page in SharePoint website
which is not stored in the database instead it reference to a file which exists
in the server’s file system. These reference files are common for all the
website/site collection within that SharePoint server, i.e., if you modify a
reference file then that change will reflect in all the websites/site
collections within that SharePoint server automatically. So we can say these
reference files are used as template."
As you can see the
benefits of having file which is ghosted when you are working in large farm or
huge repository that referenced to same file.
The SP Object Model
does not support adding file to SharePoint under ghosted mode, therefore after
reflected Microsoft.SharePoint assembly and discover that is a way to perform
same task as feature module does. "EnableModuleFromXml" in Microsoft.SharePoint.Library.SPRequest.
I had attached a
helper class which hope it can help you along with your development.
Here the example
when you try to use provision a file.
GhostFile("FullFeaturePathOnServer",
[targetWebsite], [targetFolderRelUrl | "Or leave empty"],
differentTargetFileNameOrNull, createListItem, mode)
Set createListItem = false when try provision item
in list.