配置 Office 365 API 项目以供分发
本页面说明了开发人员向其他开发人员、客户或源代码管理系统(Team Foundation Server、Git 或 Visual Studio Team Services)分发项目前,应该考虑在利用 Office 365 API 的项目中实施的一些操作。
此页面专门说明两个步骤:
- 修复 Azure AD 图形客户端 NuGet 数据包引用
- 清理 web.config 文件中的特定应用详情
修复 Azure AD 图形客户端 NuGet 数据包引用
以添加相关联的服务的方式利用 Office 365 API SDK 的所有项目都包含可以将 Office 365 和 Azure Active Directory (Azure AD) 引用添加到 Visual Studio 创建的项目的 NuGet 数据包。
Visual Studio 的 Office 365 API 工具添加到项目的 NuGet 数据包不在 NuGet 数据包注册表中,因此尝试执行的 NuGet 数据包还原会失败,因为无法找到匹配的数据包。
了解此问题
Office 365 API Tools for Visual Studio 版本 1.3.41104.1 在完成“添加连接服务向导”时,向项目添加多个 NuGet 包。 一个包尤其带来了挑战:Microsoft Azure Active Directory Graph客户端库。
Visual Studio 或外接程序通常包含 NuGet 数据包的本地副本,因此开发人员不必总是连接到 Internet 来下载 NuGet 数据包。Visual Studio 以此种方式发挥作用。 工具包含的包的 ID 为 Microsoft.Azure.ActiveDirectory.GraphClient ,版本为 1.0.22。
项目提交到源控件时,通常不将该数据包纳入提交内容,因为该数据包可能需要增加大量的额外存储空间,将其与其他开发人员共享时会造成数据包容量的不必要的增加。 因此开发人员从源控件中获取项目副本后首先进行的工作之一就是运行 NuGet 数据包还原。
挑战在于 NuGet 包注册表中不存在具有相同 ID 和版本的包;没有 ID 为 Microsoft.Azure.ActiveDirectory.GraphClient 且版本为 1.0.22 的包。 The package does exist in the NuGet package registry, Microsoft.Azure.ActiveDirectory.GraphClient, but under different versions.
修复 Azure AD 图形客户端 NuGet 包引用
在更新 Visual Studio 的 Office 365 API 工具以解决此问题前,建议无论是否在使用 Team Foundation Server、Visual Studio Team Services、Git 或任何其他解决方案,提交到源代码管理系统前都应对项目进行更改。
创建项目后,在项目的 packages.config 文件中查找 ID 为 Microsoft.Azure.ActiveDirectory.GraphClient 且版本为 1.0.22 的包。 更新项目最安全的方法是卸载然后重新安装此数据包。
打开 Visual Studio 中的“包管理器控制台”,然后输入以下内容以卸载此包:
PM> Uninstall-Package -Id Microsoft.Azure.ActiveDirectory.GraphClient
注意
如果卸载出现未发现相应数据包的错误,只需在 packages.config 文件中手动删除此文件包的引用并保存更改。
现在,从公共注册表中安装相同的 NuGet 数据包的公共版本:
PM> Install-Package -Id Microsoft.Azure.ActiveDirectory.GraphClient -Version 2.0.2
注意
前面的示例引用了已知可与 Office 365 API 配合使用的特定版本的 Azure AD Graph 客户端。 将来的版本可能正常工作,因此省略 -Version
参数是可选的。
清理 web.config 文件中的应用特定详情
Visual Studio 的 Office 365 API 工具添加了创建具有必要权限的新 Azure AD 应用程序的功能,此应用程序允许 Office 365 API 使用 Visual Studio 中的相关联的服务向导。 完成向导后,项目的 web.config 文件中生成了多个条目和自定义项。
这些修改包括以下外接程序设置:
- ida:ClientID:Azure AD 租户中创建的应用程序的唯一 ID。
- ida:Password:相关联的服务向导生成的 Azure AD 应用程序密钥。
- ida:AuthorizationUri:用于对 Azure AD 进行身份验证的端点。
ida:ClientID 和 ida:Password 对 Azure AD 应用是唯一的。 一些开发团队可能选择让每个开发人员对自己的应用进行编码,就如同开发人员对自己的本地开发数据库进行编码一样。 因此可以将 ida:ClientID 和 ida:Password 等同于数据库连接字符串。
下次开发人员使用相关联的服务向导创建项目的新 Azure AD 应用程序时,向导将检测 ida:CliendID 并尝试连接到当前用户的 Azure AD 租户的应用程序。 如果未发现匹配项,相关联的服务向导则会显示错误。
因此,将项目提交到源控件或与其他开发人员共享前,建议从 web.config 文件中的 ida:ClientID 和 ida:Password 外接程序设置中移除值。