Step 1: Create New Project (Minimum .NET Framework 3.5)
Step 2: Add “Microsoft.SharePoint.Client” and
“Microsoft.SharePoint.Client.Runtime” namespaces
Step 3: Write the following code.
using System;
//SharePoint namespace
using Microsoft.SharePoint.Client;
namespace CreatingContentTypes
{
class Program
{
static void Main(string[]
args)
{
string
siteUrl = "http://sharepointserver.com";
ClientContext
clientContext = new ClientContext(siteUrl);
clientContext.Credentials = new System.Net.NetworkCredential("admin", "password",
"sharepointserver.com");
Web
site = clientContext.Web;
clientContext.Load(site);
clientContext.ExecuteQuery();
//Getting
content type name
Console.Write("ContentType Name: ");
string
contentTypeName = Console.ReadLine();
}
static void CreateContentType(Web
site, ClientContext clientContext, string contentTypeName)
{
ContentTypeCollection
contentTypeCollection = site.AvailableContentTypes;
clientContext.Load(contentTypeCollection);
clientContext.ExecuteQuery();
int
count = 0;
//Checking
whether the ContentType already exists
foreach
(ContentType item in
contentTypeCollection)
{
clientContext.Load(item);
clientContext.ExecuteQuery();
if
(item.Name.ToUpper() == contentTypeName.ToUpper())
count++;
}
//If
doesnot exist, create it
if
(count == 0)
{
Console.Write("SiteField Name: ");
string
siteFieldName = Console.ReadLine();
string
siteField =
"<Field
Type = 'Text' " +
"Hidden
= 'False' " +
"DisplayName
= '" + siteFieldName + "' "
+
"ResultType
= 'Text' " +
"ReadOnly
= 'False' " +
"Name
= '" + siteFieldName + "' "
+
"Group
= 'Custom Columns'></Field>";
Field
field = site.Fields.AddFieldAsXml(siteField, false,
AddFieldOptions.AddFieldToDefaultView);
clientContext.ExecuteQuery();
FieldLinkCreationInformation
fieldLink = new FieldLinkCreationInformation();
fieldLink.Field = field;
//Creating
ContentType
ContentTypeCreationInformation
contentType = new ContentTypeCreationInformation();
contentType.Name =
contentTypeName;
contentType.Group = "SampleGroup";
contentType.ParentContentType =
contentTypeCollection[0].Parent;
ContentType
myContentType = site.ContentTypes.Add(contentType);
//Adding
fields to ContentType
myContentType.FieldLinks.Add(fieldLink);
field.Update();
myContentType.Update(true);
clientContext.ExecuteQuery();
site.Update();
Console.WriteLine("ContentType Created Successfully");
Console.ReadLine();
}
else
{
Console.WriteLine("ContentType already presents in the site.");
Console.Write("Enter another ContentType name: ");
string
content = Console.ReadLine();
CreateContentType(site,
clientContext, content);
}
}
}
}