我有一個簡單的類庫,我在Excel中使用。這裏是我的類的簡化...Excel 2010 64位不能創建.net對象
using System;
using System.Runtime.InteropServices;
namespace SimpleLibrary
{
[ComVisible(true)]
public interface ISixGenerator
{
int Six();
}
public class SixGenerator : ISixGenerator
{
public int Six()
{
return 6;
}
}
}
在Excel 2007中我會創建一個宏工作簿啓用並添加模塊用以下代碼:
Public Function GetSix()
Dim lib As SimpleLibrary.SixGenerator
lib = New SimpleLibrary.SixGenerator
Six = lib.Six
End Function
然後在Excel中我可以調用函數GetSix(),它將返回六。這不再適用於Excel 2010 64位。我得到一個運行時錯誤'429':ActiveX組件不能創建對象。
我試着將平臺目標改爲x64而不是任何CPU,但是之後我的代碼無法編譯,除非我取消選中Register for COM interop選項,這樣做使得我的宏啓用工作簿無法看到SimpleLibrary.dll。不再註冊。
任何想法如何使用我的圖書館與Excel 2010 64位?
而你的代碼中沒有本地依賴項?您應該嘗試解決您的代碼無法編譯爲x64的問題。你究竟得到了什麼錯誤? – 2010-04-27 19:36:45
當我將我的平臺目標設置爲x64並選擇註冊COM互操作時,我會得到「文件XXX不是有效的程序集」。此錯誤已被報告(http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/253110bc-5fee-478f-a2eb-e1d5ec6039af)但修復程序是手動註冊。當我這樣做時,我的宏啓用工作簿仍然無法看到該DLL。 – 2010-04-27 19:45:39
而你確實使用了64位版本的regasm?它是否成功註冊程序集,即沒有錯誤消息和HKCR下的條目被創建? – 2010-04-27 19:52:13