Tips and Tricks From MOSS 2007 Development Training

  • General
    • do not change identity account of application pool that is used by WSS v3 from ISS mgr, change it from WSS admin site

    • if something needs to be accessible to all sites, deploy to _layout\[yourCompanyName] folder

    • get CAML IntelliSense by create a file named as sharepoint_catalog.xml contains the following

      <SchemaCatalog xmlns="https://schemas.microsoft.com/xsd/catalog">
        <Schema href="C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML\wss.xsd" targetNamespace="https://schemas.microsoft.com/sharepoint/" />
        </SchemaCatalog>

      and copy this file to the following folder C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas\

    • do not change feature GUID after it's deployed and activated
    • turn on auditing only if absolutely necessary
    • do not use space with your list column names
    • use content field control instead of content edit WebPart for publishing
    • load balance your central admin site too
    • avoid custom site definition if possible - use features
    • use features and solutions to deploy WSS artifacts if possible
    • use MetaTagsGenerator to generate META tag for SEO (search engine optimization) 
  • Application Pages Customization
    • use theme if possible and meet your needs

    • do not modify the original _layout folder; make a copy of _layout folder and change your web application point to the _[your]layout folder

  • WebPart Development
    • unless you intend to use your WebPart on SharePoint 2003 site inherit your WebPart class from System.Web.UI.WebControls.WebParts.WebPart
    • deploy WebPart dll to bin folder instead of GAC [full trust] if possible
    • remember to add [assembly: AllowPartiallyTrustedCallers()] to allow the strong named assembly to run from the bin
    • remember to change trust level in web.config from "WSS_Minimal" to "WSS_Medium" or create your own policy if your WebPart uses Object Model
  • Using Object Model

class Program
{
    static void Main()
    {
        string sitePath = "https://litwareinc.com";
        // enter object model through site collection.
        SPSite siteCollection = new SPSite(sitePath);
        // obtain reference to top-level site.
        SPWeb site = siteCollection.RootWeb;

        SPWeb site1 = site; //this actually create a copy of site, I will have followup blog on this after I find out how the assignment of an reference type got a copy instead of a pointer
        site1.Dispose();   //this does not affect site          

        // enumerate through lists of site
        foreach (SPList list in site.Lists)
        {
            Console.WriteLine(list.Title);
        }
        // clean up by calling Dispose.
        site.Dispose();
        siteCollection.RootWeb.Dispose();
        siteCollection.Dispose();
    }
}

Comments

  • Anonymous
    June 24, 2007
    usefull

  • Anonymous
    June 28, 2007
    In addition, one more useful tip. It can be helpful when securing your SharePoint site. I've heard about great tool that can manage SharePoint security permissions. It's security explorer for SharePoint. One of my friend pointed us to scriplogic booth when we were on TechEd, they were just demonstrating this tool. I can say, it was very interesting.  After that I've downloaded beta version from their site scriptlogic.com. It works amazing. When you see all your SharePoint site as a directory tree you can easy navigate and manage permissions, backup and restore security, edit SharePoint groups and many more.

  • Anonymous
    July 10, 2007
    How could I copy the SPWeb to a different sitecollection?