因此,当visual studio构建interop dll时,它获得4.0.0.0。
TypeLib版本是4.0
但实际DLL版本是4.0.1.112
无论如何,我可以让visual studio自动构建互操作DLL以假设实际的DLL版本吗?
我可以选择让interop DLL使用我的应用程序中的版本标记。
我只需要将interop DLL与应用程序保持同步,这样安装程序就不会留下旧的interops。
我真的不想手动执行tlbimp,但我想当我实现安装程序自动化时,我可以自动执行该步骤。
答案 0 :(得分:2)
好吧,确实考虑了DLL版本。类型库只能有主版本号和次版本号。您需要将DLL版本提升到4.1.x.x
这是其他适当的行为。 COM的一个硬性规则是,如果您对公开可见的界面进行更改,则必须更改GUID。不这样做会导致最糟糕的DLL Hell,这种崩溃客户端应用程序没有任何好的方法来诊断原因。
这不再是版本更改,这是一个非如此次要的版本更改。必须重建COM服务器的客户端。如果您实际上没有更改公共接口,那么类型库版本为4.0仍然非常合适。它没有改变。
答案 1 :(得分:1)
我不相信这是可能的。在构建互操作DLL时,Visual Studio将更喜欢TypeLib版本。我认为你只能使用手工制作的DLL与tlbimp并利用/ asmversion开关