首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转义Outlook VSTO加载项路径中的与号

转义Outlook VSTO加载项路径中的与号
EN

Stack Overflow用户
提问于 2019-02-14 22:51:35
回答 1查看 92关注 0票数 0

我有一个用于Outlook的VSTO外接程序。它由帮助器外接程序通过代码加载,方法是手动将相关值添加到注册表中,联系Outlook以启动外接程序,然后清除注册表。

发生这种情况时,其中一个客户的加载项路径包含一个与号(&)。这会阻止加载外接程序,但会出现以下异常:

代码语言:javascript
复制
System.ArgumentException: Value does not fall within the expected range.
  at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.GetManifests(TimeSpan timeout)
  at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

经过一些研究,我发现路径中的&符号是罪魁祸首。我正在寻找一种方法来克服这个限制。我已经创建了一个简单的空测试加载项,并尝试通过*.vsto文件安装它,该文件位于它成功的路径中带有“与”符号的文件夹中。Outlook加载外接程序正常。因此,我知道VSTO肯定有一种方法可以做到这一点。

我尝试使用&&或&;来转义路径以显示,但没有任何帮助。有没有其他方法可以解决这个问题?以下是我从代码加载外接程序的方式的示例:

代码语言:javascript
复制
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Office\Outlook\Addins", true))
{
    key.DeleteSubKey("MyAddIn", false);
    using (RegistryKey addinKey = key.CreateSubKey("MyAddIn"))
    {
        addinKey.SetValue("Manifest", $"{ new Uri(addInPath).AbsoluteUri) }|vstolocal");
        addinKey.SetValue("Description", "My Outlook Addin");
        addinKey.SetValue("FriendlyName", "My Outlook Addin");
        addinKey.SetValue("LoadBehavior", 0);
    }

    _outlookApplication.COMAddIns.Update();

    key.DeleteSubKey("MyAddIn", false);
}

foreach (COMAddIn comAddin in _outlookApplication.COMAddIns)
{
    if (comAddin.Description == "My Outlook Addin")
    {
        ConnectAddIn(comAddin);

        break;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 23:15:13

尝试对&符号进行url编码(%26)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54693185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档