代码判断SharePoint 2019的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shrenk/article/details/87930926

SharePoint Server 2019已经发布了,最大的变化是添加了新UI。但是2019的主版本号仍旧是16。总结了三个使用代码判断SharePoint 2019版本的办法。

1,通过build number, SharePoint 2016的build number列表:https://social.technet.microsoft.com/wiki/contents/articles/34002.sharepoint-2016-build-numbers.aspx

我所安装的SharePoint 2019的build number是16.0.10337.12109,其中主版本号是16, build号是10337,而SharePoint 2016的主版本号是16,build号不超过5000,考虑到2016有可能还会有build出来,所以推测2019的build号是大于10000的。判断代码如下。

private static bool IsSharePoint2019()
        {
            var buildVersion = SPFarm.Local.BuildVersion;
            return buildVersion.Major == 16 && buildVersion.Build > 10000;
        }

 

CSOM:

private static bool IsSharePoint2019CSOM()
        {
            string url = @"http://siteurl";
            ClientContext context = new ClientContext(url);
            context.ExecuteQuery();
            return context.ServerVersion.Major == 16 && context.ServerVersion.Build > 1000;
        }

2,通过SKU Id,这个是最准确的。

    bool isSP2019= false;
    string SharePointProductsRegistryPath = @"SOFTWARE\\Microsoft\\Shared Tools\\Web Server Extensions\\16.0\\WSS\\InstalledProducts\\";

    try
    {

        using (RegistryKey key = Registry.LocalMachine.OpenSubKey(SharePointProductsRegistryPath, false))
        {
            //Get all of the installed product code/SKUId pairs.
            foreach (String value in key.GetValueNames())
            {
                try
                {
                    //Get the SKUId and see whether it is a known product.
                    String SKUId = key.GetValue(value) as String;

                    if (SKUId == "a35df3e6-6069-4d46-9e39-05ed7e8e2d7b" || SKUId == "8662ea53-55db-4a44-b72a-5e10822f9aab")
                    {
                        isSP2019= true;
                    }
                }
                catch (Exception e)
                {}
            }
        }
        }
        catch (Exception e)
        {
            
        }
    return isSP2019;

3,客户端通过_spPageContextInfo对象判断。

前两种方法都是在服务器端,而且有权限的要求才能执行代码。如果在客户端,可以通过_spPageContextInfo这个对象来判断,这个对象在2016和2019中的值是不同的,尤其在2019中,增加了很多新的值,而且在新UI的页面中也可以使用这个对象。

在SharePoint 2016中,_spPageContextInfo对象有30个值:

在SharePoint 2019中,这个对象有120个值了。主要判断某个只有2019中存在的值即可,例如“modernThemingEnabled":

代码:

var isSharePoint2019 = _spPageContextInfo.modernThemingEnabled !== undefined;

猜你喜欢

转载自blog.csdn.net/shrenk/article/details/87930926