2018年5月23日,星期三

更新您的SPFx Web部件/扩展名–核方法

SNAGHTML2356ad3Office 365和SharePoint开发人员将遇到越来越多的一种情况是需要将现有SharePoint框架(SPFx)项目升级到该框架的更高版本。 SPFx会定期定期更新,并且随着越来越多的开发转移到此方法,您将’我们会发现,当您回过头来增强或维护现有解决方案时,’s SPFx code that you’重新回到。当你做的时候,你有一个决定–您是否应该在升级Web部件/扩展名的SPFx版本时’重新进行代码更改?当然,你不’t 去(也许有避风港’自您的原始版本以来甚至是SPFx的新版本)。但是也许您想利用一些新的SPFx功能–或者也许您只是想保持最新状态并从一些可能的性能或开发人员增强中受益。

升级项目的痛苦

不幸的是,更新SPFx应用程序通常并不容易– you’当您运行gulp服务或gulp捆绑包时,通常会遇到构建错误,直到您’一切都做好了。 您的大部分指导’会看到建议您使用‘npm outdated’来识别具有较新版本的软件包,然后分别进行更新(使用npm install [package] @ [version])–确实,SPFx文档在以下位置有关于此方法的有用页面: 更新SharePoint Framework程序包. 我建议始终先尝试此过程。但是,我发现有时您也需要一些额外的步骤。我昨天升级了一个项目,最终使用了稍微不同的过程来构建可用的版本,因此我认为这是一个简短讨论的好话题。

您可以通过 npm过时了/npm install [package]@[version] 办法是,如果有新的或已删除的软件包构成了要转移到的新SPFx版本。在这种情况下,只需更新现有软件包即可’t enough.

核方法– a recipe

有时候正确的做法是变得更加激烈。您 可以 当然,请创建一个全新的SPFx应用程序并将您的代码合并到该应用程序中– but that’s 太厉害了它’很多工作,而我’我还没有看到一个案例’实际上是必要的。以下过程介于两者之间– it’基于最新版本创建一个新的SPFx项目,合并package.json文件以确保最终获得了预期版本上所有正确的软件包,然后基于该文件夹重建node_modules文件夹。一世’d use it when:

  • Updating existing packages using npm过时了/npm install@version doesn’工作(仍然出现构建错误)
  • 我有信心以前的版本在源代码管理中,包括package-lock.json文件(因此我可以在需要时将所有内容还原)

该过程将是:

  • 安装最新的Yeoman Generator版本
  • 创建一个新的临时SPFx应用(Web部件或扩展名)以匹配您所使用的应用’re updating)
  • 合并 package.json 从临时应用转到您的
    • 目的是拥有所需的所有包装–新框架版本的所有SPFx软件包,以及您先前为此Web部件/扩展名安装的所有其他软件包
  • 删除任何 package-lock.json 要么 npm-shrinkwrap.json 本地目录中的文件(但是 从源代码管理中删除-您可能仍需要返回到以前的版本)
  • 删除所有内容 node_modules
  • npm安装
  • 进行任何调整 tsconfig.json 如果需要-较新的SPFx版本有时也需要在此处进行更改
    • 构建错误应为您提供针对这些问题的解决方案。最近运行到SPFx 1.4.1的升级时,我需要在“lib” section for “es2015” –但针对您需要的特定调整查找构建错误
  • 喝干净 (删除以前的构建输出)

    此时,您 应该 当您运行时,再次具有正常工作的版本 口香糖束 要么 喝一口 . 如果你 do, 和 you’重新感到一切正常,您应该:

    • 致力于源代码控制
      • 确保你的 package-lock.json 包含文件– this represents the node_modules 此构建的树,并且您需要它来重新创建构建(因为您赢得了’t be checking-in the node_modules 文件夹本身)
    • 继续进行您实际上来这里进行的代码更改:)

      其他注意事项

      • 本地SPFx项目需要格外小心。 npm存储库包含软件包的最新版本,但请记住,当您’re on-prem you’re 冷冻的 特定版本的SPFx软件包(不是npm存储库最新版本)。因此,您的package.json文件需要反映适合您内部部署的版本。

      祝好运!

        2018年5月10日,星期四

        PowerApps / Flow中的推送通知的许可

        如果你’在Office 365中使用PowerApps和Flow做更多工作,迟早要想使用高级连接器,可能会遇到一个有趣的问题–谁需要P1或P2许可证?高级连接器需要Office 365 E1,E3甚至E5附带的额外许可,并且许可要求可能会因连接器及其使用方式而异–这意味着成本也会有所不同。我一个’我关注的是推送通知– let’s say you’重新构建PowerApp或使用Flow,并且您想在发生某些情况(例如,设备上的警报,而不是电子邮件或SMS)时向移动设备发送通知。在这种情况下,您’您很可能会找到方法来执行PowerApps推送通知操作(高级连接器)。同时还有一个Flow推送通知,该通知只能发送给Flow所有者–但通常,您希望将通知发送给某种批准者或收件人,而不是发送给流程的人。因此,PowerApps通知可能就是您所需要的– but don’被这个名字迷住了。这东西不是’限制在PowerApp中使用(例如单击按钮)-它也可以在Flow中使用(例如,当Flow到达某个阶段时)。这里’s那里的样子:

        PowerAppsnotification - in picker

        [SNAGHTML109f23cb%5B5%5D]

        谁需要许可证?

        因此,当您需要通知很多人时遇到的问题是“谁真正需要P1 / P2许可证?”

        • 仅仅是用户/发送者吗? (在这种情况下,Flow将以哪个用户身份运行)?
        • 是每个收件人吗?
        • 是每个人 可以 成为收件人?

        It’一个有趣的,我不能’在文档中找不到答案。我们在为一位客户做一些工作时遇到了这种情况,因此我与Microsoft进行了友好的联系(感谢Dan!),他在内部进行了一些挖掘以进行查找。

        答案

        实际上,这取决于触发流程的方式–因为它可以通过用户操作或通过事件间接完成:

        已触发

        谁需要许可证

        需要许可证类型

        手动地 触发流程的应用程序的任何用户(例如您的PowerApp,流程按钮或其他应用程序)
        • 流由PowerApp触发–> PowerAppsP1
        • 流量由“流量”按钮触发–> Flow P1
        通过事件(例如,SharePoint列表中的新项目,OneDrive中的新文件等) 只是流作者
        • P2(流量)–*但请在下面查看我的警告

        It’值得注意的是,这些P1和P2附加许可既有PowerApps也有Flow风格– but PowerAppslicenses always include Flow capabilities. PowerApps许可证的价格也相应地更高,因为您也可以充分利用PowerApps的全部功能。大致的想法是:

        • 用户创建“basic”PowerApps(例如canvas应用程序)需要P1许可证-PowerApps P1当前每个用户每月$ 7
        • 用户创建“advanced”PowerApps(例如,模型驱动的应用程序,业务流程,CDS中的实体等)需要P2许可证(当前,PowerApps P1每个用户每月需支付40美元)

        对于许多PowerApp而言,尽管如此(我认为),这意味着P1许可证已足够。

          另请注意,如果您’仅使用Flow而不使用PowerApps,也许您只需要Flow P1 / P2许可证。这些许可证比PowerApps P1 / P2许可证便宜得多(目前,Flow P1每个用户每月5美元,Flow P2每个用户每月15美元)。

          *顺便说一句,参考我的上表,我的理解是,如果您有一个PowerApp可以将SharePoint列表项(或文件添加到OneDrive等),则该用户需要PowerApps许可证–不只是流量许可证。毕竟,该事件实际上是由PowerApp触发的–而不是纯粹是间接的东西,例如来自手动添加的列表项/文件。

          如果你 need to know up-to-date pricing, see the PowerAppsplans pricing流量计划定价 页面。另一个很好的资源(以及许可示例)是 PowerAppslicensing overview 页–这有一些很棒的信息,但是只是没有’没有我需要的关于优质连接器和接收器的详细信息。

          其他情况

          也许您想仅在PowerApps中使用PowerApps推送通知(即不在Flow中使用)。在这种情况下,有类似的注意事项:

          • 具有“推送通知”连接的应用程序的制造商需要PowerApps P1或P2许可证(当您’d expect)
          • 该应用程序的用户需要PowerApps P1或P2许可证’d期望,因为这是高级连接器,请记住)

          但是那里’如果这是一个有趣的可能性’s a 不同 收到通知的PowerApp (在PowerApps世界中,’一个应用可以发送通知,并且 另一个 被接收)。在这种情况下:

          • 收件人应用程序的用户不需要PowerApps P1 / P2许可证–他们的Office 365许可证就足够了
            • (这是因为此应用程序不使用“推送通知”连接)

          以便’只要实现要求可以满足您的具体要求(即您可以通过这种方式拆分应用),这绝对是一个有用的技巧。

          概要

          围绕PowerApps和Flow的许可肯定存在一些复杂性,并且当您使用它们构建更多解决方案时,需要考虑更多方案– in fact, . I’m 但是,您并不想成为要回答您所有许可问题的人:)’如果上述链接不正确,将需要与Microsoft联系’没有您需要的详细信息,因为他们’我会提供比以往更好的答案。但是,我认为有些人可能会遇到与我相同的问题,并且我认为其中一些信息需要更加突出。

          乐于构建您的解决方案!