3

我正在使用 Visual Studio 2010、VSTO 4.0 为 2007/2010 创建 Outlook 加载项

我有 3 个项目:

  • 2010Ribbon(Ribbon1.cs、Ribbon2.cs)
  • 2007Ribbon(Ribbon1-2007.cs,Ribbon2-2007.cs)
  • 共享代码(类库)

我只是想根据版本加载正确版本的功能区(DESIGNER)

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        majorVersion = Globals.ThisAddIn.Application.Version.Split(new char[] { '.' })[0];
        if (majorVersion == 12) //Outlook 2007
        {
            Initialize2007UI();  
        }
        else if (majorVersion >= 14) //Outlook 2010
        {
            Initialize2010UI();   
        }
    }

如何实现 Initialize2007UI() 和 Initialize2010UI(); 在资源管理器窗口中加载它们各自的 Ribbon1.cs,在 Inspector 窗口中加载 Ribbon2.cs?

谢谢!!!!

希望我清楚我在问什么:)

4

1 回答 1

1

可能这就是您要寻找的

protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
    majorVersion = Globals.ThisAddIn.Application.Version.Split(new char[] { '.' })[0];
        if (majorVersion == 12) //Outlook 2007
        {
             return new Ribbon2007();
        }
        else if (majorVersion >= 14) //Outlook 2010
        {
            return new Ribbon2010();
        }


}


[ComVisible(true)]
public class Ribbon2007: Office.IRibbonExtensibility
{
    public string GetCustomUI(string ribbonID)
        {
                    var ribbonXml = GetResourceText("Ribbon2007.xml");                 
                    XNamespace nameSpace = @"http://schemas.microsoft.com/office/2006/01/customui";                  
                    return ribbonXml;
    }
}


[ComVisible(true)]
public class Ribbon2007: Office.IRibbonExtensibility
{
    public string GetCustomUI(string ribbonID)
        {
            var ribbonXml = GetResourceText("Ribbon2010.xml");                 
                    XNamespace nameSpace = @"http://schemas.microsoft.com/office/2009/07/customui";                  
                    return ribbonXml;
    }
}
于 2013-03-01T02:32:36.103 回答