SharePoint Developer Environments (Esp. 2007)

About a year and a half ago, our petition at my current work site to create/use developer environments for SharePoint (then 2003) was punted, mostly because the requirements for dev environments are almost completely diametrically opposed to the various security and systems policies at this site. The detente when finally reached was that we could run entirely self-contained VPCs but only if they ran on our (my consulting company’s) hardware and were composed of developer licensed software licensed to my company.

Anyhow, now that 2007’s out, deployed at my current work site, and people are taking seriously the task of converting from MS CMS 2002 to MS SharePoint 2007, among other things, the need for developer environments cannot be denied, and the VPCs my company is creating for such an environment are too resource-intensive to run on our old laptops, so something’s got to give.

As such, I’m doing a lot of research about it to justify/position the arguments for such environments. In general I will have at least skimmed these links, but may not have read them thoroughly. These link dump posts are really something I do to keep track of my current research and provide pointers to those who might need them.

Basic assumptions:

  • You want one server context (IIS/SharePoint) per developer for the initial code-writing steps
    This is for non-shared resources, like web parts, maybe features, etc. Something that a single developer could conceivably do in a short chunk of time in the project.
    The reason is primarily that when you attach VS 2005 to a dll/process during interactive debugging, the step-through operations lock up that application pool for anyone else sharing the same execution context.
  • Your basic virtual machine for this kind of dev work is going to be running Windows Server 2003, Windows SharePoint Services 3.0 and Visual Studio 2005, at minimum.
    In our situation we’ll probably need the whole shooting match, because unapproved SQL servers are not allowed on the open net, and they’re unapproved if they’re not solely administrated by our DBA group. Similar injunctions apply to domain controllers and unapproved DC/AD activity, as well as simply running Windows Server 2003 on a non-server box.
  • If you are allowed to run the server type applications on the VPC and then use your host operating system (i.e. the Windows XP or whatever you’re running VPC in) to run the client developer tools against the services on the VPC, the actual recommendation is to do that instead
    So you’d have a standard VPC image that has Server 2003, SQL Server (unless you’re sharing that as a network resource hosted somewhere else – but be sure you have the permissions you need to noodle around in it if it is a shared resource), AD (same cautions apply to this as SQL Server), and WSS3.0/MOSS 2007. You’d run this in a host operating system where you’d run all your client development tools. You’d still have one execution environment per developer, but the performance might be a little better.

Anyhow, here’s a list of relevant blog entries/MSDN/Technet articles:

Some links also for software architecture/development approaches:

And some links to relevant tools:

I’ll add more links as I ID them.

Send to -> Other Location sort of works!

(Woops, had to replace the images after pixelizing out all the identifying URL and ID information from the screenshots.)

(Woops 2, apparently I have now broken the image attachments here, so maybe I have to do it all again, sigh. Will do so later – Short version is that IE7 seems to be able to copy like this only across web applications, whereas Firefox 2.0 and IE6 seem only to be able to copy from subsite to parent site (I haven’t tried the other direction yet). Issue is now active with Microsoft support. The SharePoint support team have escalated the issue to the IE team, but I have yet to hear from the IE team.)

I have an open Microsoft Support case for this, and will update when I get more information.

In a document library in MOSS2007/WSS3.0, if you use the drop-down menu on the document, you can choose “Send To” -> “Other Location”. In the following dialogue box, you can select another location to send this document to. It seems to work in both IE7 and Firefox 2.0 if you are publishing from one site collection to another, but not if you are publishing, say, from a locked down subsite to a parent site that’s more public. In that case, the Send works fine in Firefox 2.0 but not in IE7. In IE7, you get prompted for permissions no matter who you are (or at least I do, being admin up and down the tree of sites, subsites, server farms, on the machine, using the account that runs the whole farm, etc.).

So here’s the typical functioning copy process (for a copy to other location between two site collections on the same Web Application (aka IIS’s virtual server, and specifically in this case, the same port: 80).

Start the copy process:
01PX - Dropdown to Copy to Other Location in IE7 - Cross Site Collection

Specify parameters:
02PX - Initial Copy settings screen - Cross-Site Collection Copy

Confirm copy:
03PX - Copy Progress popup with confirmation (OK) button - Cross-Site-Collection Copy

Review success message:
04PX - Copy Progress Successful/Done - Cross-Site-Collection Copy

Confirm that the copy succeeded in destination document library:
05PX - Confirmation of Copy - Cross-Site-Collection Copy

In contrast, here’s the same operation NOT working in IE7 while copying a file from a locked down subsite to the subsite’s parent (and top-level) site.

Start the operation normally:
06PX - Drop down command - Copy from Subsite

Set the parameters for the copy:
07PX - Copy Screen - Copy from Subsite

The Copy Progess confirmation popup window:
08PX - Copy Confirmation popup - Copy from Subsite

Get prompted for access (click cancel after trying lots of different possibilities):
09PX - Login Prompt - Copy from Subsite

Get returned to the Copy Progress popup with failures:
10PX - Copy Progress failures - Copy from Subsite

And here, I demonstrate that Firefox 2.0 has no problem with the same operation IE7 just failed at:

Initial authentication (Because it’s Firefox):
11PX - Firefox 2.0 - Initial Authentication - From Subsite

Start the copy via the dropdown box (normal):
12PX - Firefox 2.0 - Start the Copy - From Subsite

Normal copy parameters:
13PX - Firefox 2.0 - Copy Parameters - From Subsite

No popup window for Copy Progress – you get a nice website screen instead. Same deal, though:
14PX - Firefox 2.0 - Copy Confirmation - From Subsite

Copy Progress Screen reports finished:
15PX - Firefox 2.0 - Finish status from the Copy Progress - From Subsite

Confirm the copy worked – go to the destination Document Library:
16PX - Firefox 2.0 - Confirmation that document is where it should be - From Subsite

Interesting tidbit for getting your VPC-borne development environments to run properly

This tip from Kevin Kelly (not of, btw, but my co-worker – Hi Kev!).

Anyhow, if, like us, you need to do your development in a single-server installation that’s network-isolated (either SPS2003 or MOSS2007), you may have found that there are some issues when you install and try to use some SharePoint/Visual Studio features. You get what look like network name-resolution issues and other related issues. (I’ll provide more specific error information when I next see it.)

It turns out that the Visual Studio/SharePoint features that raise the errors are using the same COM model/object and raising contention issues with the System Event Notification Service. If you stop the System Event Notification Service then the features you’re trying to use start working fine.

The problem is of course that if you disable the System Event Notification Service, your code may not log events properly to the event logs. So be sure you know whether the thing is on or off while you’re doing troubleshooting!

I’ll play with this more and try to come up with some screenshots/error messages when I get the new MOSS 2007 VPC to play with (a few weeks) that my company’s creating.

MOSS 2007 Site Definitions Links

Am now doing research on how to make Site Definitions for MOSS 2007/WSS 3.0. The main reason to do this, is as far as I can now determine (this may change) still the same reason you made one for SPS 2003.

You can use Site Templates (which are entirely different animals) within any particular top level site/site collection by installing them after the top level site is running, and then base new subsites on those within the gallery of the site collection.

In contrast, if you want a thing that acts like a Site Template but applies to the root, top level site in a site collection while you are creating the site collection for the first time, you need to have already created and installed a site definition that looks/feels/behaves the way you want it to.

Anyhow, here are the how-to links: