0

Excel アプリケーションで使用する .NET ベースの COM コンポーネントを開発しようとしています。Visual Studio 2012 Express を使用して、クラス ライブラリ プロジェクトを作成し、"アセンブリ COM 可視" および "COM 相互運用に登録" オプションを選択して、プロジェクトをビルドし、Excel ブックからエクスポートされたタイプ ライブラリを参照して、正常にテストしました。

問題は、DLL を他のマシンに展開するにはどうすればよいかということです。csc を使用してライブラリをコンパイルし、RegAsm /tlb に登録し (/codebase オプションの有無にかかわらず)、出力をグローバル アセンブリ キャッシュに追加しようとしました。しかし、その結果、VBA エディタの [参照設定] ダイアログにエントリがありません。タイプ ライブラリを参照して参照を設定することはできますが、オブジェクトを作成しようとするとエラー (「ActiveX オブジェクトを作成できません」) が発生します。

では、Visual Studio は何をしていて、私はしていないのでしょうか? どんな洞察も大歓迎です。

私のコード:

using System;
using System.Reflection;
using System.Runtime.InteropServices;

[assembly : AssemblyTitle("Com Test 3")]
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : Guid("F2715EE7-099F-464A-994A-390D34FAE6BA")]
[assembly : ComVisible(true)]

namespace ComTest3
{
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [Guid("C416AB08-4DE4-4E73-BDC4-B49B4CEE4901")]
    public interface ITestClass3
    {
        string TestMethod3();
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [Guid("6383217C-1871-4AAA-BFA1-0CC077250DB3")]
    public class ComTestClass3 : ITestClass3
    {
        public string TestMethod3()
        {
            return "TestMethod3 called on " + DateTime.Now.ToString();
        }
    }
}
4

0 に答える 0