2

我的应用程序(C#、.NET 4.0、VS2010)引用了一个 COM dll(Adobe InDesign CS6 类型库)。当我构建应用程序时,tlibimp 正在生成“interop.indesign.dll”并出现在 obj\x86\release 中。但是,它不会出现在 bin\x86\release 中。

只有两个选项可供参考。Embed Interop-types 设置为 true(false 会导致错误),Isolated 设置为 false。

现在问题来了。该应用程序以前使用 InDesign CS4 类型库。根据客户的要求,它被提升到 CS6。如果在 PC 上安装了 InDesign CS4 和 CS6,则该应用程序可以工作。它不适用于仅安装 CS6 的情况。看起来仍然有对 CS4 的引用,但我 100% 确定,我删除了所有内容。所有引用都指向 CS6 类型库,检查 .csproj 文件没有显示任何不需要的东西。

除了从头开始重建整个项目文件夹之外,还有什么方法可以解决这个问题?非常感谢任何帮助。

4

1 回答 1

2

经过更多研究,我找到了解决问题的方法。InDesign CS6 类型库未正确注册。我认为 InDesign 安装程序(或 InDesign 本身)是这里的罪魁祸首。

要解决此问题,请从命令行运行以下命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe "C:\ProgramData\Adobe\InDesign\Version 8.0\de_DE\Scripting Support\8.0\Resources for Visual Basic.tlb"

之后,类型库被正确注册,应用程序按预期工作。

于 2013-02-06T09:23:08.513 回答