热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

好消息_使用MicrosoftTeamsToolkitforVisualStudio高效构建一个指示板

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用MicrosoftTeamsToolkitforVisualStudio高效构建一个指示板相关的知识,希望对你有一定的参考价值

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用 Microsoft Teams Toolkit for Visual Studio 高效构建一个指示板相关的知识,希望对你有一定的参考价值。


Teams Toolkit for Visual Studio 现在可用了,这对于.NET开发者来说真是一个好消息。
本篇我们会介绍使用 ASP.NET Core 去构建一个 Teams 选项卡,并展示如何利用 Teams Toolkit for Visual Studio 去提升我们效率的步骤。


  1. 安装 Teams Toolkit for Visual Studio
  2. 在 Visual Studio 中创建基于 ASP.NET Core 的 Teams 应用程序
  3. 通过访问日历事件、待办任务和文件夹,增强我们的 Teams 应用程序


安装 Teams Toolkit for Visual Studio


  • 安装 Visual Studio 2022 的 17.3 或更高版本,在安装的过程中:
    • 选择 Workloads 中的 ASP.NET and web development inside the Workloads
    • 在 Installation details 中选择 Microsoft Teams development tools


  • 在构建我们的 Teams 应用程序时,我们需要 sideloading 权限来安装和调试应用程序,因此我们需要确保拥有一个 Microsoft 365 账户。具体内容可以参阅 => 此文档。

在 Visual Studio 中创建基于 ASP.NET Core 的 Teams 应用程序


  1. 打开 Visual Studio,选择 Create a new project:

  2. 搜索关键字 teams 并选择 Microsoft Teams App,点击 Next 按钮:

  3. 填写项目名称并选择项目路径,点击 Create 按钮:

  4. 选择 Tab 作为应用类型,点击 Create 按钮:

  5. 项目创建好之后,右键点击该项目,选择 Teams Toolkit > Prepare Teams App Dependencies 并确保登录了我们的 Microsoft 365 账号

运行刚刚创建好的应用程序,可以看到认证和用户信息已经可用了:


通过访问日历事件、待办任务和文件夹,增强我们的 Teams 应用程序


1️⃣ 使用 MSAL2 Provider 来启用 Single Sign On


  1. 在项目中,访问 Pages > _Host.cshtml,在页面顶部添加如下引用:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

  1. 在Body节点中添加如下代码块

<script src&#61;"https://unpkg.com/&#64;&#64;microsoft/mgt/dist/bundle/mgt-loader.js"></script>
<script>
mgt.Providers.globalProvider &#61; new mgt.Msal2Provider(
clientId: "&#64;Configuration["TeamsFx:Authentication:ClientId"]",
loginHint: "&#64;User.Claims.FirstOrDefault(c &#61;> c.Type &#61;&#61; "preferred_username")?.Value",
redirectUri: "/blank-auth-end.html",
loginType: mgt.LoginType.Popup,
authority: "&#64;Configuration["TeamsFx:Authentication:OAuthAuthority"]"
);
</script>

  1. Redirect Uri 这个位置我们定义了一个 blank-auth-end.html&#xff0c;我们需要创建它。右键 wwwroot&#xff0c;选择 “New item”&#xff0c;创建blank-auth-end.html 文件
  2. 用下面的代码替换 permissions.json 中的托管权限定义

"delegated": ["User.Read","User.ReadBasic.All","Calendars.Read","Files.Read","Files.Read.All","Sites.Read.All","Tasks.Read","Tasks.ReadWrite","People.Read","User.ReadBasic.All"]

2️⃣ 使用 Microsoft Graph Toolkit 组件设计我们的选项卡


  1. Tab.razor 页面&#xff0c;在 provider 下面添加如下代码来初始化 Person 组件

<div>
<mgt-person person-query&#61;"me" view&#61;"twoLines"></mgt-person>
</div>

  1. 在 Person组件下面&#xff0c;div节点内继续添加如下代码

<div class&#61;"features">
<div class&#61;"header">
<div class&#61;"title">
<h2>One Productivity Hub</h2>
<div class&#61;"row">
<div class&#61;"column"><h3>Calendar events</h3></div>
<div class&#61;"column"><h3>To-do tasks</h3></div>
<div class&#61;"column"><h3>Files</h3></div>
</div>
</div>
</div>
<div class&#61;"row" id&#61;"content">
<div class&#61;"column" id&#61;"mgt-col"></div>
<div class&#61;"column" id&#61;"mgt-col"></div>
<div class&#61;"column" id&#61;"mgt-col"></div>
</div>
</div>

  1. 在 class 为 row 的 div 下面的第一个 div 里&#xff0c;添加 Agenda 组件

<mgt-agenda></mgt-agenda>

  1. 第二个里 div 添加 To-do 组件

<mgt-todo></mgt-todo>

  1. 第三个里 div 添加文件列表组件

<mgt-file-list></mgt-file-list>

  1. 打开 Tab.razor.css&#xff0c;用如下内容替换原内容

body,
#root > div
background-color: #F3F2F1;

.features
min-height: 80vh;
margin: 20px;
background-color: #FFF;
box-shadow: 0px 1.2px 3.6px rgba(0, 0, 0, 0.11), 0px 6.4px 14.4px rgba(0, 0, 0, 0.13);
border-radius: 4px;
font-family: &#39;Segoe UI&#39;, Tahoma, Geneva, Verdana, sans-serif;

.header
display: flex;
background-color: #f0f0f0;

.title
margin-top: 20px;
margin-left: 10px;
width: 100%;

.title h2
font-size: 24px;
padding-left: 5px;
display: inline;
font-weight: 600;

.title h3
float: left;
width: 33%;
background: transparent;
font-size: 16px;
margin-bottom: 10px;
padding-left: 10px;
padding-top: 10px;
color: #8A8886;
font-weight: 600;

mgt-person
margin-top: 20px;
margin-left: 20px;
--avatar-size: 60px;
--font-family: &#39;Segoe UI&#39;;
--font-size: 20px;
--font-weight: 700;
--color: black;
--text-transform: none;
--line2-font-size: 14px;
--line2-font-weight: 400;
--line2-color: #8A8886;
--line2-text-transform: none;

#content, html, body
height: 98%;

#mgt-col
float: left;
width: 33%;
background: transparent;
height: 60vh;
overflow: hidden;
padding: 5px;
margin-top: 5px;

#mgt-col:hover
overflow-y: auto;


3️⃣ 测试我们的应用


  1. 访问 .fx > states&#xff0c;移除 state.local.json 文件
  2. 右键项目&#xff0c;选择 Teams Toolkit > Prepare Teams App Dependencies&#xff0c;确保已经完成了登录&#xff0c;按 F5 启动调试&#xff0c;效果如下所示&#xff1a;


推荐阅读
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 【MEGA DEAL】Ruby on Rails编码训练营(97%折扣)限时特惠!
    本文介绍了JCG Deals商店提供的Ruby on Rails编码训练营的超值优惠活动,现在只需29美元即可获得,原价为$1,296。Ruby on Rails是一种用于Web开发的编程语言,即使没有编程或网页设计经验,也能在几分钟内构建专业的网站。该训练营共有6门课程,包括使用Ruby on Rails进行BDD的课程,使用RSpec 3和Capybara等。限时特惠,机会难得,赶快行动吧! ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
author-avatar
QuincySwim
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有