Imagine you work for a large company that uses Microsoft Project Server. Since you have many employees, having MSP sync individual permissions for every user to every site is simply not scalable. Instead, you’d like to use some Active Directory groups that are already set up to manage permissions in the workspace.

So you disable the workspace permissions sync in PWA:

  1. Navigate to PWA
  2. Click Server Settings
  3. Click Project Workspace Provisioning Settings
  4. Validate that the “Workspace Permissions” checkbox is unchecked

Microsoft Project Server Workspace Permissions

Then, perhaps you write some code that is wrapped up in a nice SharePoint feature to manage setting up the permissions yourself. Everything works great….

… until you start getting reports that some user’s permissions aren’t quite right for some project sites.

» Read more…

I ran across a strange error while deploying a very simple DLL. It contained only one class; a web services proxy class to the Lists SharePoint web service that I generated using the wsdl tool. Here is the error:

Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\WINDOWS\TEMP\_zm3ve2y.0.cs’ could not be found
error CS2008: No inputs specified

Apparently, this is because the generated proxy class uses XmlSerializer somewhere internally. My guess is that it is de-serializing the soap messages into objects?

Some googling turned up the common answer of “just give the account access to the temp directory.” This seemed strange to me (also something our infrastructure team was wary of doing). Eventually I found this awesome answer by Richard. Essentially your options are:

  1. Give the account access to the temp directory
  2. Use the sgen tool to pre-generate the serialization assembly
  3. Not use the proxy class (??)

In my opinion, using sgen is the logical choice. The documentation for sgen also puts it pretty clearly:

When the XML Serializer Generator is not used, a XmlSerializer generates serialization code and a serialization assembly for each type every time an application is run. To improve the performance of XML serialization startup, use the Sgen.exe tool to generate those assemblies the assemblies in advance. These assemblies can then be deployed with the application.

So all I needed to do was run this command against the Release version of my DLL:

sgen /a:MyAssembly.dll /compiler:/keyfile:../../MyAssembly.snk

This will generate another assembly: MyAssembly.XmlSerializers.dll. Cool!

I was writing a little web services app to help delete individual permissions from a site and thought about trying XPATH on the result to get what I needed. I had some trouble so thought I’d put together a small example for later reference.

» Read more…

SPUtility.js 0.8 and beyond!

April 26th, 2011

Quick update to SPUtility.js today! I’ve added support for rich text fields, unchecking multi-select checkboxes, and choice fields with fill-in values. I also have some thoughts on future SPUtility.js updates.
» Read more…

Commit to SharePoint Overflow!

February 9th, 2011

I want to put a quick post out here in support of SharePoint Overflow being migrated to StackExchange v2.0. It is a a great complement to StackOverflow for all things SharePoint related.

You can commit here: SharePoint Overflow.