2011-10-18 92 views
1

我正在處理一個項目,該項目需要我們通過COM互操作項目從VB6應用程序啓動.NET 4(C#)/ WPF窗口。 WPF窗口包含對用於WPF組件的Microsoft Ribbon的引用(RibbonControlsLibrary.dll,作爲.NET interop項目中的依賴項)。當從.NET測試客戶端打開窗口時,一切正常,但是當它從VB6打開時,我在Ribbon的實例化過程中遇到XamlParseException。進一步的調試顯示該窗口無法解析,因爲它無法找到RibbonControlsLibrary.dll,儘管它已成功複製到互操作項目的輸出目錄中。從窗口的XAML定義中刪除Ribbon聲明允許它從.NET和VB6成功啓動。WPF/VB6互操作不識別RibbonControlsLibrary

這個特定的VB6項目有幾個相應的.NET互操作項目,它們以這種方式引用純.NET組件,完全沒有問題。那麼RibbonControlsLibrary組件的差異足以導致此行爲?

+0

VB6和WPF之間的互操作是否值得麻煩?爲什麼不在純WPF中重寫呢? – CJ7

+0

總的來說,我會同意。然而,在我們目前的情況下,我們有一個完美的風暴,沒有足夠的時間,很少的資源和頑固的用戶羣,在阻止它發生的所有機會中抵制變化。 – Jesse

回答

0

這裏的問題畢竟不是程序集綁定問題。無論出於何種原因,看起來RibbonButton的SmallImageSource屬性在VB6通過.NET COM互操作類訪問庫時都無法識別。在我的情況下,這個屬性是沒有必要的,所以刪除它解決了這個問題。