我有一個傳統的VB6 COM DLL作爲.NET項目中的參考。我的手工打造過程是這樣的:如何自動更新.NET項目COM引用?
- 構建VB6 DLL
- 複製VB6 DLL參考目錄
- 註冊VB6 DLL與
regsvr32
- 在.NET項目,刪除舊參考
- 添加對新VB6 DLL的引用(瀏覽)
- 將引用的Isolated屬性設置爲True
- 構建.NET解決方案
我正在自動執行此過程。步驟4到6給我帶來麻煩。當我註冊新的VB6 COM DLL時,.NET項目中的舊引用無效。通過查看項目文件,我看到:
<ItemGroup>
<COMReference Include="DllName">
<Guid>{65CDCC83-E707-4AA3-8940-FE79F265D570}</Guid>
<VersionMajor>50</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>True</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
我相信我需要與COM的新的CLSID自動覆蓋Guid
財產,我可能需要改變VersionMajor
和VersionMinor
性能。
不幸的是,這些似乎不是VB6 COM DLL文件的屬性。我在哪裏可以獲得這些信息,或者我是否可以走上正確的道路?有一些工具或選項會自動爲我做這個嗎?
編輯
生成錯誤,如果我不更新參考我得到的是錯誤MSB3179。
錯誤消息的實際文本是:
C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(2580,9):錯誤MSB3179:問題隔離COM參考'DllName':未檢測到此組件的註冊類。 [path/to/projfile.vbproj]
...其中「DllName」是我的DLL名稱,「path/to/projfile.vbproj」是具有COM引用的項目文件的完全限定路徑。
我不認爲你可以解決這個問題,而不使用VB6二進制兼容性選項,所以GUID保持穩定。 –
@HansPassant - 是的,我現在將DLL設置爲二進制兼容性,我看到Guid和版本保持不變。但是,當我構建解決方案時,我仍然遇到MSB3179錯誤。 –
錯誤信息的實際文字是什麼? –