以下は、私が実行した手順であり、COM コンポーネントとして公開された .NET アセンブリを正常にデバッグできました。
COM オブジェクトとして公開されるクラスを含むクラス ライブラリを作成することから始めます。
namespace COMTest
{
using System;
using System.Runtime.InteropServices;
public interface IFoo
{
void Bar();
}
[ComVisible(true)]
public class Foo : IFoo
{
public void Bar()
{
Console.WriteLine("Bar");
}
}
}
強力なキーでアセンブリに署名し、COM オブジェクトとして登録します。
regasm.exe /codebase COMTest.dll
COM オブジェクトを登録したら、新しい Visual Studio インスタンスで新しいコンソール アプリケーションを作成して、COM オブジェクトをテストできます。
class Program
{
static void Main()
{
var type = Type.GetTypeFromProgID("COMTest.Foo");
var instance = Activator.CreateInstance(type);
type.InvokeMember("Bar", BindingFlags.InvokeMethod, null, instance, new object[0]);
}
}
行にブレークポイントを配置しInvokeMember
、アプリケーションを実行します。ブレークポイントに到達したら、モジュール ウィンドウ( Ctrl+D M) を開き、COM アセンブリのシンボルが読み込まれていることを確認します。

押すF11と、COM クラスにステップインしてデバッグできます。
Foo
注:クラスを含む .cs ファイルを直接開いて、そこにブレークポイントを直接配置することもできます。もう一度重要なことは、アセンブリ用にシンボルをロードすることです。またはブレークポイントを配置すると、Visual Studio は、このブレークポイントにヒットしないことを通知します。