簡體   English   中英

在C#/ .NET 4.0中新的NoPIA和Type Equivalence功能是否意味着不再需要Microsoft.mshtml.dll

[英]Do the new NoPIA and Type Equivalence features in C#/.NET 4.0 mean Microsoft.mshtml.dll is no longer needed

我正在維護一個基於WPF的應用程序,它包含一個基於WinForms的WebBrowser控件,該控件基於IE Web瀏覽器控件。 當我們部署時,我們還必須提供Microsoft.mshtml.dll並為ClickOnce發布過程執行一些自定義配置,以便讓事情發揮作用。

我很好奇,使用C#4.0中新的NoPIAType Equivalence功能以及動態類型功能,我們可以期望如果我們升級它,我們可以刪除對Microsoft.mshtml.dll程序集的依賴嗎? 如果是這樣,這不僅會減少我們部署的規模,而且還會簡化我們的發布過程。

我的理解是,我們應該能夠將通常自動生成的類型嵌入到COM類型的額外程序集中,例如Visual Studio的MapPoint控件。 我不知道這是否也適用於Microsoft.mshtml.dll甚至是在最簡單的情況下它是如何完成的。 如果有人可以解釋這些新功能對依賴COM互操作的項目的實際影響,特別是Microsoft.mshtml.dll程序集,那將對我有很大幫助。

當然,這就是它的全部意義。 將您的解決方案導入VS2010,Project + Properties,Application選項卡,將Target Framework更改為.NET 4.0。 在Solution Explorer窗口中打開References節點,選擇Microsoft.mshtml引用並將其“Embed Interop Type”屬性設置為True。 對於以4.0為目標的新項目,它會自動打開

這適用於您在COM選項卡上選擇的任何COM類型庫以及您在.NET選項卡中選擇的任何PIA。 類型庫僅在構建時需要,您不必再部署互操作庫或PIA。 當然,實際的COM服務器必須仍然存在於目標機器上。

新的動態關鍵字以及可選和命名的參數功能不相關,它們只是在使用旨在使用腳本語言的COM服務器時更容易編寫更干凈的代碼。 Mshtml已經相當干凈,Office interop就是最好的例子。

另請注意,在利用Windows窗體的HtmlDocument和HtmlElement類時,很容易避免依賴於mshtml。 這是通過使用WebBrowser.Document屬性開始的。 但是它們不包含所有mshtml功能。

C#4.0我們可以期望,如果我們升級,我們可以刪除Microsoft.mshtml.dll程序集的依賴項嗎?

您仍然需要依賴項來構建程序集,但在運行時不需要它(並且VS不會將其復制到輸出目錄)

如果已將MSHTML引用屬性中的“嵌入互操作類型”設置設置為“True”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM