如何调用 tlbexp 命令作为构建后事件,以从 Visual Studio 2019 IDE 的 C# EXE 导出类型库?

Mr.*_*C64 3 c# com msbuild typelib visual-studio

我开发了一个定义 COM UDT(用户定义类型)的 C# .EXE:

[ComVisible(true)]
[StructLayout(LayoutKind.Sequential)]
[Guid(" ... some GUID ... ")]
public struct MyStructure
{
    ... various fields ...
}
Run Code Online (Sandbox Code Playgroud)

我需要从这个 C# .EXE 创建一个类型库。我可以使用 Visual Studio 命令提示符来执行此操作:

> tlbexp.exe MyCSharpApp.exe
Run Code Online (Sandbox Code Playgroud)

该命令生成MyCSharpApp.tlb文件。

我想使用 Visual Studio 2019自动执行此步骤。

因此,我在构建后事件中输入了以下行:

"tlbexp.exe $(TargetDir)$(TargetFileName)"
Run Code Online (Sandbox Code Playgroud)

VS 中的构建后事件设置

但是,当我从 Visual Studio 2019 构建项目时,出现以下错误:

error MSB3073: The command ""tlbexp.exe C:\Path\To\MyCSharpApp.exe"" exited with code 123.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我在这里缺少什么?

如何在构建后事件中自动调用 tlbexp?

Sim*_*ier 7

tlbexp.exe 通常不在路径中。你可以做的是使用它来代替(不像你那样包围“”):

call "$(DevEnvDir)..\Tools\VsDevCmd.bat"
tlbexp.exe $(TargetDir)$(TargetFileName)
Run Code Online (Sandbox Code Playgroud)

这将执行与“Visual Studio 的开发人员命令提示符”shell 命令等效的命令,该命令将相应地设置所有路径,然后运行 ​​tlbexp:

在此输入图像描述