2011-08-10 43 views
4

我幾乎沒有任何有關COM的知識,但我會盡量使問題儘可能清晰。引用COM DLL時幫助文本丟失

我有一個.NET 4.0項目,並且引用了用VBScript編寫的舊COM DLL。

當我在代碼中使用此DLL時,我沒有在VS2010中獲得任何描述方法和類的自定義幫助文本。它們在對象瀏覽器中也不可用。

我想這與由.NET應用於COM庫的自動包裝有關。在這個過程中,幫助文本似乎迷失了方向。

當我直接在VS對象瀏覽器中查看DLL,我可以看到方法等

有沒有辦法讓文字描述與引用的COM DLL編碼的文本?

+1

很基本的compat問題,.NET沒有辦法將IntelliSense信息嵌入到程序集中。它通過一個單獨的.xml文件提供。類型庫導入程序(tlbimp.exe)沒有辦法將嵌入的幫助屬性轉換爲IntelliSense .xml文件。會很有用,你可以在這裏發佈一個建議:http://clrinterop.codeplex.com/releases/view/17579 –

+0

這是.NET/VS使用的默認導入器嗎? – magnattic

+0

否============ –

回答

0

您是否提及可用於.NET類的內聯幫助文檔,而不是參數類型信息?如果是的話,我分享你的挫折感。爲了C#程序員通過COM interop使用COM對象的好處,我花了很多努力在我的IDL中編寫幫助字符串註釋,以發現其中沒有一個能夠在類型庫導入後倖存下來。

在「常見問題解答:爲什麼類型庫導入程序不自動將幫助字符串內容自動保存在DescriptionAttribute中?」的Adam Nathan的書「.NET和COM:完全互操作性指南」中有這種行爲的解釋。我發現這本書對於瞭解COM互操作非常有幫助,儘管它的年齡。它也可以用Kindle,epub和pdf格式購買。

Adam Nathan的解釋是,幫助字符串屬性未被翻譯成System.ComponentModel.DescriptionAttribute對象,因爲DescriptionAttributes是針對Windows窗體控件的,並且不是本地化的。

Peronally,我仍然喜歡helptring屬性被翻譯。也許該功能可以添加到上面鏈接的codeplex類型庫導入程序,如果它沒有這樣做。