VB.NET动态更新VSTO功能区中的链接

VB.NET动态更新VSTO功能区中的链接,vb.net,sharepoint,Vb.net,Sharepoint,我在VSTO 2017上有一个自定义Office Ribbon加载项,内置于VB.NET(Framework 4.6.1)中(无论哪个Office应用程序需要在Excel、Word、Outlook和PowerPoint中执行此操作)。功能区中有一个按钮,用于将用户带到链接,该链接当前是硬编码的(请参见下面的示例): 有没有办法使这个链接动态化?理想情况下,我可以在网上的某个地方有一个表或资源,其中包含以下伪代码: myLink1 = GoTo("http://MasterURL.com").Re

我在VSTO 2017上有一个自定义Office Ribbon加载项,内置于VB.NET(Framework 4.6.1)中(无论哪个Office应用程序需要在Excel、Word、Outlook和PowerPoint中执行此操作)。功能区中有一个按钮,用于将用户带到链接,该链接当前是硬编码的(请参见下面的示例):

有没有办法使这个链接动态化?理想情况下,我可以在网上的某个地方有一个表或资源,其中包含以下伪代码:

myLink1 = GoTo("http://MasterURL.com").RetrieveLink(1)
Diagnostics.Process.Start(myLink1) 'I can update myLink1 to google.com
这样,我不需要向用户发布更新,以防MyLink 1发生更改,我只需在某个网站MasterURL.com或某个服务器上进行更新,功能区就会检索到它并直接指向该页面

这似乎是一件基本/简单的事情,但我似乎找不到解决办法


非常感谢

您基本上需要调用按钮下的服务才能从在线存储中获取链接。(或在最终用户计算机上查询数据库)

举个例子,我在谷歌上搜索了一些测试API,发现了这个 这些站点公开了一个API,每个人都可以调用该API进行测试

下面是一个示例,说明如何在不进行任何错误处理的情况下做到这一点(有多种方法)

class Program
{
    static void Main(string[] args)
    {
        // here is your on-line source
        var url = "https://jsonplaceholder.typicode.com/posts";

        string responseFromServer;

        var request = WebRequest.Create(url);
        request.Credentials = CredentialCache.DefaultCredentials;

        using (var response = request.GetResponse())
        {
            using (var dataStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(dataStream);
                responseFromServer = reader.ReadToEnd();
            }
        }

        Console.WriteLine(responseFromServer);
        Console.Read();
    }
}

嗯……这比我希望的要复杂一些,但逻辑是有道理的。谢谢你的回答
class Program
{
    static void Main(string[] args)
    {
        // here is your on-line source
        var url = "https://jsonplaceholder.typicode.com/posts";

        string responseFromServer;

        var request = WebRequest.Create(url);
        request.Credentials = CredentialCache.DefaultCredentials;

        using (var response = request.GetResponse())
        {
            using (var dataStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(dataStream);
                responseFromServer = reader.ReadToEnd();
            }
        }

        Console.WriteLine(responseFromServer);
        Console.Read();
    }
}