SharePoint Client-Side Object Model ClientContext.Load method


Today I was struggling with my first try at some SharePoint 2013 Client Side Object Model C# code, starting with the example I found at http://www.learningsharepoint.com/2010/07/22/get-all-users-and-groups-client-object-model-sharepoint-2010/.

As all of you may know, you need to reference at least two assemblies to get this going:
  • Microsoft.SharePoint.Client.dll
  • Microsoft.SharePoint.Client.Runtime.dll
Unfortunately at that point I was still inexperienced, and I forgot to add a reference to Microsoft.SharePoint.Client.Runtime.dll.

When I tried to compile the following code:
The compiler threw the following error message:

  • 'Microsoft.SharePoint.Client.ClientContext' does not contain a definition for 'Load' and no extension method 'Load' accepting a first argument of type 'Microsoft.SharePoint.Client.ClientContext' could be found (are you missing a using directive or an assembly reference?
Luckily the compiler hinted to the possible fact that there was missing a assembly reference.

Finally, I added Microsoft.SharePoint.Client.Runtime.dll as well and the errors went away.

I found it quite confusing that I was able to use a class but not all available methods, assuming the example I took was right of course.

So I digged into the decompilation of both assemblies and this is what I found out:
  • ClientContext inherits from ClientRuntimeContext
  • ClientContext is defined in Microsoft.SharePoint.Client.dll
  • ClientRuntimeContext is defined in Microsoft.SharePoint.Client.Runtime.dll
  • ClientRuntimeContext defines the Load method:
Hopefully this piece of information is useful to some of you out there.

Reacties

Populaire posts van deze blog

Exploring advanced DOM interop with Blazor WebAssembly

Azure Custom Role Definitions and Assignment Scopes

Troubleshooting restoring a site collection