Excel UDF'不是一个有效的插件'的错误

我正在尝试使用VS 2010创build一个自定义的vb.net Excel 2007函数(UDF),并且已经到了这个阶段(借鉴Eric Carter的例子,在http://blogs.msdn.com/b/eric_carter/archive/2004 /12/01/273127.aspx ):

Namespace AutomationAddin <Guid("1aeeb1b5-e099-4f7f-aeb0-3e9f19b64f62")> <ClassInterface(ClassInterfaceType.AutoDual)> <ComVisible(True)> Public Class MyFunctions Public MyFunctions() Public Function MultiplyNTimes(ByVal number1 As Double, ByVal number2 As Double, ByVal timesToMultiply As Double) As Double Dim result As Double = number1 For i As Integer = 0 To timesToMultiply - 1 result = result * number2 Next Return result End Function <ComRegisterFunctionAttribute()> Public Shared Sub RegisterFunction(ByVal type As Type) Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, "Programmable")) Dim key As RegistryKey = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), True) key.SetValue("", (System.Environment.SystemDirectory + "\mscoree.dll"), RegistryValueKind.String) End Sub <ComUnregisterFunctionAttribute()> Public Shared Sub UnregisterFunction(ByVal type As Type) Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type, "Programmable"), False) End Sub Private Shared Function GetSubKeyName(ByVal type As Type, ByVal subKeyName As String) As String Dim s As System.Text.StringBuilder = New System.Text.StringBuilder s.Append("CLSID\{") s.Append(type.GUID.ToString.ToUpper) s.Append("}\") s.Append(subKeyName) Return s.ToString End Function End Class End Namespace 

但是,当我使用VS 2010构build它并尝试使用Addin Manager> Automation在Excel 2007中加载它时,我发现它列为AutomationAddin.AutomationAddin.MyFunctions,然后单击“确定”以获取错误“AutomationAddin.AutomationAddin.MyFunctions不是有效的加载项“。 我已经将生成设置设置为注册COM互操作。

我已经在网上看了一下,并尝试以下这篇文章如何获得在VB.NET编写的COM服务器安装和注册在自动化服务器列表中? 但无济于事。 我检查了我的registry(在我build立了我的项目之后),在CLSID / {myGuid} / InprocServer32 / Default下,数据被设置为C:\ WINDOWS \ system32 \ mscoree.dll,CLSID / {myGuid} / Programmable已经存在。

我不太清楚自己做错了什么,并希望对这个主题有任何指导或build议。

干杯,

你可能想看看这篇文章( 构build和部署一个.NET COM程序集 ),这可能会对你有帮助。

我不知道这是否与问题有关(特别是在所有这些时间之后),但是我最初是使用COM加载项(使用Visual Studio 2010的Excel 2010加载项目生成器创build的)开始的。 然后,我使用Eric Carter博客和其他示例在同一个项目中手动添加了一个自动加载项(用于UDF)。 两人独立工作良好。 只是在两个相同的命名空间(为了一些令人沉迷的理由)合并后,我开始得到“…不是一个有效的加载项”的错误。 花了一天把我的头发撕掉,然后再次分离命名空间 – 问题消失了。