Please don’t ask why, only know that it had to be done. The requirement was to copy documents in a library in SP2013 to another library in SP2007. This is made easier by using CSOM, but getting the right libraries can be a little tricky. I also needed to access managed metadata values, which SP2007 is like “meta-whata-now?” about.
I found that I needed to use the Microsoft.SharePoint.Client libraries from SP2010, as I was developing on the SP2007 dev box. This is because the 2013 DLLs require .NET 4.0, and 2007 uses 3.5.
So I had to:
- Create a new folder on your 2007 server/dev environment in C:\Program Files\Common Files\microsoft shared\Web Server Extensions\. You should already see a folder in there called “12”. Create a new one called “14”.
- In “14”, create another folder called “ISAPI”. This mirrors the folder structure of 2010. It’s not strictly necessary but it keeps things organised and clear.
- On your 2010 server (you have one, right? If not, you’ll need to find these from somewhere,) copy the client DLLs you’ll need. To do my task, I needed the following:
- If you find you need to use other libraries from 2010, add them to this same folder.
- In Visual Studio, add references in your project to the DLLs in the new “14” folder.
- For the core Microsoft.SharePoint DLL, reference the DLL in the “12” folder.
- Keep to the DLLs in the 12 folder wherever possible.
That was the start of my fun crossing-the-streams adventure. I used the above to create a console app that scans given libraries by name, for tagged documents to “publish”, copying some of their managed metadata. I used a couple of good resources, which I’ll link to in the next post regarding this subject.