无需发布,如何在非本地VS2022环境测试Outlook插件?
问题:Outlook插件跨设备侧加载测试异常
我开发了一款Outlook插件,本地通过VS2022在Outlook网页版测试正常。现在想无需发布,在未运行本地VS的其他设备上测试该插件,但插件清单(manifest)中的HTML、图片及脚本均指向localhost路径,清单相关代码如下:
<Resources> <bt:Images> <bt:Image id="icon16" DefaultValue="https://localhost:44310/Images/icon16.png"/> <bt:Image id="icon32" DefaultValue="https://localhost:44310/Images/icon32.png"/> <bt:Image id="icon80" DefaultValue="https://localhost:44310/Images/icon80.png"/> </bt:Images> <bt:Urls> <bt:Url id="functionFile" DefaultValue="https://localhost:44310/Functions/FunctionFile.html"/> <bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://localhost:44310/MessageRead.html"/> ... </Resources>
尝试在其他设备的Windows Outlook中侧加载该清单文件(已清除缓存路径:C:\Users\Gandhimathi_S\AppData\Local\Microsoft\Office\16.0\Wef)时,出现错误提示:
Sorry. we can't load the add-in. Please make sure you have network and/or Internet connectivity. Click "Retry" once you're back online for certain requests.
仅当本地运行VS时,插件在Windows Outlook中才可正常工作。请问是否可通过修改清单文件中的资源路径实现跨设备测试?同时,是否存在无需发布即可在非本地VS2022环境测试插件的方法?
解决方案
一、修改清单资源路径实现跨设备测试
完全可以通过修改清单路径实现跨设备测试,核心是把localhost替换成其他设备能访问到的地址:
- 先获取开发机器的局域网IPv4地址:打开命令提示符(cmd),执行
ipconfig,找到对应网卡的IPv4地址(比如192.168.1.105) - 批量替换清单中所有
https://localhost:44310为https://[你的局域网IP]:44310,比如https://192.168.1.105:44310/Images/icon16.png - 确保开发机器的防火墙允许44310端口的入站HTTPS请求,同时保持VS的调试服务器处于运行状态(插件资源仍依赖本地服务器)
- 测试设备需和开发机器处于同一局域网内,这样才能正常访问资源
二、无需发布的非VS环境测试方法
1. 搭建本地静态文件服务器
- 把插件的所有静态资源(HTML、JS、图片、样式等)打包,用
nginx、http-server(需配置HTTPS)等工具搭建独立服务器 - 修改清单中的资源路径为该服务器的局域网IP/公网地址,其他设备侧加载修改后的清单即可,无需运行VS
- 注意:Outlook插件强制要求HTTPS,所以服务器必须配置有效的SSL证书(可使用自签名证书,测试设备需信任该证书)
2. 使用内网穿透工具(支持跨局域网测试)
- 用
ngrok这类工具将本地端口映射到公网HTTPS地址:安装ngrok后,执行命令ngrok http https://localhost:44310 -host-header="localhost:44310" - 把清单中所有
localhost地址替换为ngrok生成的公网HTTPS地址(比如https://abc123.ngrok.io) - 其他设备无论是否在同一局域网,只要能联网就能侧加载测试,无需发布到应用商店
3. 网页版多账号侧加载
如果仅需测试Outlook网页版,可直接将修改了资源地址的清单上传到目标账号的Outlook网页版侧加载功能,只要资源地址能被该账号访问即可(比如用局域网IP或ngrok地址)
内容的提问来源于stack exchange,提问作者gandhi
相关产品推荐
相关产品推荐

