2010-04-21 47 views
0

这看起来很琐碎,但我无法得到它的工作MSI.DLL进口..无法签署使用TLBIMP装配

我有一个MSI.DLL包装(名为Interop.WindowsInstaller.dll)的我需要签字。做到这一点的方法是在导入时签署它(这个特定的案例甚至在MSDN中有记录:http://msdn.microsoft.com/en-us/library/zec56a0w.aspx)。

- 不管我怎么做(W /或W/OA密钥文件,W /或W/O添加 “/ delaysign”),生成的assemly的大小始终是36,864字节和查看DLL的属性时没有“数字签名”选项卡(不用说 - DLL没有签名)。

我在这里错过了什么? (...帮助!)

回答

0

[注意:最终我从卡雷尔Zikmund on this thread提示,这帮助我解决了这个谜。我会在这里粘贴我的回复 - 为更好的]。

所以,我使用的下面的行向登录在导入该组件:

TLBIMP C:\窗口\ system32 \ MSI.DLL /out:Interop.WindowsInstaller.dll /keyfile:MyKey.snk

我再复制该文件到适当的位置,并建立了项目,但每个构建失败以下错误时间:集生成失败 - 引用程序集“Interop.WindowsInstaller”不具有强名称

我认为这个问题是与TLBIMP线,但阅读卡雷尔Zikmund的答复,并确定该DLL是强命名后(使用SN室颤Interop.WindowsInstaller)我发现了这个问题。

将引用添加到“Microsoft Windows Installer对象库”COM对象实际上将一个代码块植入.csproj文件中。 我没有意识到这一点,但该块导致DLL文件在每次项目建成时都从零开始重新生成。生成的文件当然没有强名。

我解决它是从项目中移除所提到的“Microsoft Windows安装程序对象库”,并添加直接文件参考进口的(并已签订)Interop.WindowsInstaller.dll文件的方式。