/pnpcore

PnP Core SDK

Primary LanguageC#MIT LicenseMIT

PnP Core SDK

Build and Test Refresh documentation Nightly nuget release

Nuget package Description Latest development version
PnP.Core The PnP Core SDK PnP.Core Nuget package
PnP.Core.Auth The authentication provider for the PnP Core SDK PnP.Core.Auth Nuget package

The PnP Core SDK is an SDK designed to work for Microsoft 365. It provides a unified object model for working with SharePoint Online and Teams which is agnostic to the underlying API's being called. Currently the library is in preview, see our roadmap for more details. The initial goal for this library will be to cover the needs of developers working with either SharePoint Online or Teams, but we're also open to extend this library further towards other Microsoft 365 workloads if there's community demand for doing so.

Important The PnP Core SDK is in preview: it's targetting developers that want to either test or extend it. It's not yet ready to be used in production scenarios, mainly because it still lacks some of the model definitions and the object model might still have breaking changes.

For more details on how to use this SDK and how to contribute checkout https://aka.ms/pnp/coresdk/docs.

Roadmap

This is a community effort, hence we cannot guarantee below roadmap but rest assure, we're working hard to stick to plan :-) If you want to join our team and help realize this, then checkout the How can I help section in our docs.

  • Preview 3: September 2020 (shipped)
  • Beta 1: October 2020
  • Beta 2: November 2020
  • V1: December 2020

Frequently Asked Questions

Will this work in modern .Net

Absolutely! One of the key reasons for building PnP Core SDK is to nicely fit into modern .Net development:

What's the relationship with the existing PnP Sites Core / PnP Framework libraries

The PnP Sites Core library is very popular library that extends SharePoint using mainly CSOM. This library contains the PnP Provisioning engine, tons of extension methods, a modern page API, etc...but this library has also organically grown into a complex and hard to maintain code base. One of the reasons why the PnP Core SDK development started is to provide a new clean basis for the PnP Sites Core library with a strong focus on quality (test coverage above 80%, automation). As this transition will take quite some time and effort we plan to gradually move things over from PnP Sites Core to the PnP Core SDK. The first step in this transition is releasing a .Net Standard 2.0 version of PnP Sites Core, called PnP Framework. Going forward PnP Framework features will move to the PnP Core SDK in a phased approach. At this moment we've shipped our first PnP Framework preview version and preview 3 of the PnP Core SDK.

PnP dotnet roadmap

What underlying API's are used

The SDK provides an object model that's API agnostic, when you as a developer for example load a SharePoint List the SDK by default will use Microsoft Graph. If however you're loading List properties that cannot be provided via Microsoft Graph the SDK wil issue a SharePoint REST call. Depending on the needs the SDK will use Microsoft Graph Beta calls (e.g. for Taxonomy support) and in some rare cases the CSOM endpoint (client.svc) is called. But the good thing is that all of this is transparent for you as developer! You'll have a consistent development experience regardless of the underlying API's being called.

As Microsoft Graph is our recommended API to work with Microsoft 365, the SDK will always use Microsoft Graph whenever possible, the "fall back" to SharePoint REST only happens when Microsoft Graph can't provide the needed data.

Community rocks, sharing is caring!

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.