如何使用C#的MS DIA SDK?

我正在尝试使用C#的Microsoft Debug Interface Access SDK 。 这是随Visual Studio一起安装的,但是文档似乎没有提到你如何在C#中使用它。

我在interweb上找到了示例代码,但没有关于如何链接到DIA SDK的信息。 即我无法将其作为assembly导入。 我不认为我必须将它包含在托管C ++应用程序中并将其用作COM(这将是地狱)。

有一个IDL文件,这是正确的方法吗? 如果是这样,怎么样?


编辑:以下将创建用作引用程序集的类型库。 粘贴到批处理文件中。

call "%VS80COMNTOOLS%\vsvars32.bat" midl /I "%VSINSTALLDIR%\DIA SDK\include" "%VSINSTALLDIR%\DIA SDK\idl\dia2.idl" /tlb dia2.tlb tlbimp dia2.tlb 

您需要先将IDL转换为类型库:

就像是:

 midl /I "%VSINSTALLDIR%\DIA SDK\include" dia2.idl /tlb dia2.tlb tlbimp dia2.tlb 

然后你可以导入tlb。

我从未使用过这种方式的DIA SDK,所以不知道它会有多友好。 您还可以考虑直接从托管C ++程序集中使用它,并为您需要的function提供托管界面。

之前的说明有效,但需要进行一些更新。 VSINSTALLDIR不再存在(当你安装了多个VS版本时,它是不明确的)所以我概括并纠正了指令。 这是一个VS 2015版本:

 "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64 set DIASDK=%VS140COMNTOOLS%..\..\DIA SDK midl /I "%DIASDK%\include" "%DIASDK%\idl\dia2.idl" /tlb dia2.tlb tlbimp dia2.tlb 

更改VS140以匹配您尝试使用的任何版本。

这创建了我添加的dia2lib.dll作为参考 – 右键单击​​引用,添加引用,浏览,找到该文件。 它工作,我现在可以构建和运行符号。

如果有人对路径有疑问,这就是VS 2017对我有用的东西。

  1. 打开x86_x64交叉工具命令提示符(从管理员模式下的 start / programs / Visual Studio 2017开始)

  2. cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional

  3. midl /I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\idl";"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\include" dia2.idl /tlb dia2.tlb

  4. tlbimp dia2.tlb

Dia2Lib.dll现在位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional文件夹中。

在C#代码中使用它我得到了未注册的DLLexception! 我不得不跑

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\bin>regsvr32 msdia140.dll

解决这个问题