引用VBA組件我有一個C#.NET 3.5的項目,遺憾的是依賴於幾個VB6的ActiveX控件。運行時錯誤從C#
到現在爲止,我已經能夠通過簡單地在我的項目增加了控制的參考和引用它們的正常愉快地訪問ActiveX控件定義的數據容器和方法。
不過,我今天遇到了障礙,當我不得不調用返回VBA.Collection的方法。
我的代碼沒有問題,編譯,但在運行時我得到以下錯誤:
Could not load file or assembly 'Interop.VBA, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
我不得不引用Interop.VBA(版本6.0.0.0)和Interop.VBRUN(版本6.0.0.0 )在我的項目中,有什麼想法?
我不能給出具體的代碼,它是根據一份NDA覆蓋。
然而,這裏是從對象瀏覽器示例代碼與名稱變更爲保護不那麼天真;)
我可以從我的代碼中引用了以下屬性和方法:
ReturnConstants GoodMethod();
string prop1
ReturnConstants prop2
如果我嘗試可以調用此方法,我得到上述錯誤信息在運行時:
Collection BadMethod();
所以調用返回,導致這一問題的VBA.Collection的方法。 這些是我無法控制的第三方控件,它們不會被重寫.net
編輯:出於興趣我在VS2010中嘗試了一個快速虛擬項目,並且按預期完美工作,這可能是VS2012的一個問題。我見過一些帖子暗示2012年不會正確創建VBA的互用性,所以我會去看看我能在那裏找到什麼...
不好看,看漢斯Passants評論:stackoverflow.com/questions/25816367/dll-for-vba-collection雖然如果它在VS2010中起作用,並且已將其縮小到VS 2012問題,請查看[此MSDN主題]中的最後一篇文章(https://social.msdn.microsoft.com/Forums/vstudio/en-US/4dc9413e-9c18-43d3-a989-27db6f8f4d96 /使用-comreference與 - 淨-4-目標平臺和 - aximp?論壇=的msbuild)由Marucio。無論如何,這些都是猜測,也許是一個ProcessMonitor,看看它找到一個它找不到的文件是什麼,在哪裏更orthadox TS'ing。 –
我希望你能對它進行排序,我只想提到最後一件事。使用Interops,VS2012 [加載不同版本](http://stackoverflow.com/a/13328392/495455)!因此,檢查模塊窗口,看看是否有助於進一步縮小問題的範圍。祝你好運! –