Как легко создать Excel UDF с проектом надстройки VSTO

Я пытаюсь создать пользовательские функции (UDF) для Excel, используя тип проекта CST «Надстройка Excel 2007» (поскольку я просто хочу сгенерировать некоторые общие UDF). Поскольку я только пытаюсь изучить основы (на данном этапе, во всяком случае), вот как выглядит мой код:

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Tools.Excel.Extensions;
using System.Runtime.InteropServices;

namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {}

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {}

        //My UDF
        public static double HeronicCal(int a, int b, int c)
        {
            //first compute S = (a+b+c)/2
            double S = (a + b + c) / 2;    
            double area = Math.Sqrt(S * (S - a) * (S - b) * (S - c));
            return area;
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }            
        #endregion
    }
}

Он прекрасно компилируется, и когда я его запускаю, Excel открывает новую электронную таблицу, и когда я смотрю на список «Надстройки» (в опциях Excel), я вижу свою надстройку в списке (который установлен «Загрузить при запуске». Но тут возникает моя проблема, когда я пытаюсь вызвать свой UDF из-за Excel, Excel не может найти метод!

То, что я считаю неправильным, это то, что я должен пометить свой метод как UDF Excel (используя квадратные скобки - как, например, это делается при кодировании веб-сервисов -> «[WebService]»). Но я не смог отследить этот тэг (и так как я совсем не уверен, что моя догадка верна), поэтому я решил пойти к вам, замечательные люди, здесь, в SO.

Итак, мой вопрос в основном таков: откуда я с моим кодом, есть ли какой-нибудь простой способ сделать мой UDF доступным для Excel? Если да, то как?

Я действительно хотел бы остаться в рамках типов проектов VSTO (Add-In, Workbook, Template), так как моя общая цель для моего текущего проекта - установить, работает ли C # UDF с VS2010 / Excel2007 с приемлемой скоростью. Чтобы проверить это, я работаю на Windows7RC и на бета-версии VS2010.

Ответы на вопрос(4)

Ваш ответ на вопрос