我正在为软件(即Autodesk Robot)编写插件。
软件的维护者已经制作了一个描述外接程序创建的文档,其中解释了以下步骤:
[1。至6.与配置写作和构建项目有关。]
然后
File menu \ Open \ File
->打开创建的dll文件(在我们的示例中为…\ MyAddin \ bin \ Debug \ MyAddin.dll)将创建的
tlb
库添加到dll
(鼠标右键单击菜单),资源类型应命名为TYPELIB:
- 使用“属性”(鼠标右键单击菜单)将TYPELIB编号更改为1
- 关闭Visual Studio并将更改保存到dll文件
- 将\创建的
dll
文件\复制到要使用的任何计算机上,将其定位在目标文件夹中后,请按以下方式注册: 以管理员身份打开命令提示符窗口 并通过命令注册:c:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /tlb /codebase MyAddin.dll
我正在尝试自动化生成和嵌入.tlb
文件的过程。广泛阅读此书后,我发现this question和the link to this blog post在接受的答案的注释中。
我已经向项目添加了.rc
文件,创建了.tlb
文件,将其中两个放置在项目的.\bin\Debug
文件夹中,编译了.rc
到.res
,最后将构建器指向我刚刚创建的该资源文件,以解决上述问题。
我的.rc
文件内容如下:
1 TYPELIB "RobotOrientAddIn.tlb"
构建项目时,没有收到任何错误消息,但是如果我打开创建的dll
文件,则在文件树中没有“ TYPELIB”资源的踪迹...不知道为什么!
阅读MS文档并没有太大帮助,因为我对.NET
行话不太熟悉。
对此我感到非常困惑,如果有人可以提供帮助,我将不胜感激。最终,我想在构建后的事件中完成所有这些工作,以便在构建项目后不再需要人工摆弄。
答案 0 :(得分:1)
我也在尝试自动化这个过程,以便于调试机器人插件,我得到了:
下载 NirCmd 并将其安装到您的 Windows 文件夹中。
在 Visual Studio 中添加 Post-Build 事件命令:
"%Windir%\nircmd.exe" elevate "%Windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /tlb /codebase $(TargetFileName)
echo 1 typelib $(TargetName).tlb > $(TargetName).rc
nircmd.exe wait 5000
"%ProgramFiles(x86)%\Windows Kits\10\bin\10.0.18362.0\x86\rc.exe" "$(TargetName).rc"
nircmd.exe wait 5000
"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" "$(SolutionPath)" -property:Win32Resource="$(TargetDir)$(TargetName).res" -property:Configuration=Debug -property:Platform="Any CPU" -property:PostBuildEvent=
"%Windir%\nircmd.exe" elevate "%Windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /tlb /codebase $(TargetFileName)
1st 创建 tlb 文件。
2nd 创建 rc 文件。
第 3 次等待 5 秒,创建 tlb 文件(如果需要,增加)。
4、将rc文件编译成Win32资源文件(.res).
第 5 个(可选)等待 5 秒以确保在最终构建之前完成所有事情。
使用 res 文件进行第 6 次重建。
7th 使用嵌入式 tlb.
.
非常重要:检查 regasm.exe、rc.exe 和 MSBuild.exe 文件的路径,并根据需要进行修改。
然后你只需要像往常一样构建你的 dll,它就可以被 Autodesk Robot Add-Ins Manager 接受了。
这适用于 VS2019 和 Autodesk Robot 2020。
祝你好运