为分发配置 SharePoint 提供程序托管的外接程序
本页面将解释与其他开发人员共享 SharePoint 提供程序托管的外接程序或从源代码管理系统(如 Team Foundation Server、Git 或 Visual Studio Team Services)获取副本时可能出现的问题。
所有使用 Visual Studio 创建的 SharePoint 提供程序托管的外接程序都包含一个 NuGet 数据包,该数据包会将 SharePoint 特定代码和引用添加到 Web 应用程序,以此来充当 SharePoint 外接程序的 RemoteWeb。
Visual Studio 的 Office 开发人员工具添加到 Web 应用程序项目的 NuGet 数据包不在 NuGet 数据包注册表中,因此尝试执行的 NuGet 数据包还原会失败,因为无法找到匹配的数据包。
了解问题
Visual Studio 的 Office 开发人员工具版本 12.0.31105 向作为 SharePoint 提供程序托管的外接程序的 RemoteWeb Web 的应用程序添加了 NuGet 数据包。此数据包(即 SharePoint Web 相关应用程序 Web 工具包)向 Web 项目添加了以下项:
- 程序集和对 SharePoint 客户端对象模型 (CSOM) 程序集的引用。
- 协助外接程序的身份验证流程的代码文件 TokenHelper.cs。
- 有助于在 Web 应用程序中创建和维护 SharePoint 上下文的代码文件 SharePointContext.cs。
Visual Studio 或外接程序通常包含 NuGet 数据包的本地副本,因此开发人员不必总是连接到 Internet 来下载 NuGet 数据包。Visual Studio 以此种方式发挥作用。 工具包括的包的 ID 为 AppForSharePoint16WebToolkit。
项目提交到源控件时,通常不将该数据包纳入提交内容,因为该数据包可能需要增加大量的额外存储空间,将其与其他开发人员共享时会造成数据包容量的不必要的增加。 因此开发人员从源控件中获取项目副本后首先进行的工作之一就是运行 NuGet 数据包还原。
挑战在于,NuGet 包注册表中没有 ID 相同的包,且没有 ID 为 AppForSharePoint16WebToolkit 的包。 相反,同一个包则以 AppForSharePointWebToolkit 的形式添加到了 NuGet 包注册表(注意此 ID 中没有 16
)。
为源控件/分发准备提供程序托管的外接程序项目
Visual Studio 的 Office 开发人员工具进行更新以解决此问题前,建议无论是否在使用 Team Foundation Server、Visual Studio Team Services、Git 或任何其他解决方案,提交到源代码管理系统前都对项目进行更改。
创建项目后,查看项目的 packages.config 文件,并搜索 ID 为 AppForSharePoint16WebToolkit 的数据包。 更新项目最安全的方法是卸载然后重新安装此数据包。
打开 Visual Studio 中的“数据包管理器控制台”,然后输入以下内容以卸载此数据包:
PM> Uninstall-Package -Id AppForSharePoint16WebToolkit
注意
如果卸载出现未发现相应数据包的错误,只需在 packages.config 文件中手动删除此文件包的引用并保存更改。
现在,从公共注册表中安装相同的 NuGet 数据包的公共版本:
PM> Install-Package -Id AppForSharePointWebToolkit