在Outlook VSTO加载项路径中转义符号和
我有一个要为Outlook添加的VSI。它由助手加载项通过代码加载,方法是手动将相关值添加到注册表,联系Outlook启动加载项,然后清理注册表 发生这种情况的原因是,对于其中一个客户,外接程序的路径包含一个符号&符号。这将防止加载项加载以下异常:在Outlook VSTO加载项路径中转义符号和,outlook,vsto,outlook-addin,add-in,office-addins,Outlook,Vsto,Outlook Addin,Add In,Office Addins,我有一个要为Outlook添加的VSI。它由助手加载项通过代码加载,方法是手动将相关值添加到注册表,联系Outlook启动加载项,然后清理注册表 发生这种情况的原因是,对于其中一个客户,外接程序的路径包含一个符号&符号。这将防止加载项加载以下异常: System.ArgumentException: Value does not fall within the expected range. at Microsoft.VisualStudio.Tools.Applications.Deplo
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很好地加载了加载项。所以我知道一定有办法做到这一点
我已尝试使用&&or&;逃离清单的路径;但这没用。我还有别的办法吗?下面是我从代码加载外接程序的示例:
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;
}
}
尝试对符号%26进行url编码。没有考虑过url编码!这确实奏效了。。。。但是有一个警告。我还将我的加载项添加到VSTO包含列表中,以避免在加载时显示有关受信任发布者的消息。但是现在路径中的符号替换为%26后,此解决方法不再有效=\n如果我在包含列表注册表中替换了符号,即使我没有替换,也会显示受信任的发布者消息。我不知道,抱歉。这很公平。我将针对该问题发布一个单独的问题。