互操做類型沒法嵌入

我正在用C#在.NET 4.0框架(beta2)上建立一個Web應用程序。 git

當我嘗試使用名爲「 ActiveHomeScriptLib」的程序集時,出現如下錯誤: 瀏覽器

沒法嵌入互操做類型「 ActiveHomeScriptLib.ActiveHomeClass」。 請改用適用的界面。 app

當我將框架更改成版本3.5時,我沒有任何錯誤。 框架

什麼是互操做類型?爲何僅在使用4.0框架時纔會發生這種狀況? spa


#1樓

http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307 code

發生此錯誤的緣由是,新項目中引用的TestStand API Interop程序集的Embed Interop Types屬性的默認值爲true。 若要解決此錯誤,請按照下列步驟操做,將Embed Interop Types屬性的值更改成False:在解決方案資源管理器中,在項目的引用部分中選擇TestStand Interop程序集引用。 在屬性瀏覽器中找到「嵌入互操做類型」屬性,並將其值更改成False。 對象


#2樓

.NET 4.0容許將主互操做程序集(或更確切地說,您須要的互操做程序集)嵌入到程序集中,所以您無需將它們與應用程序一塊兒部署。 blog

不管出於何種緣由,都沒法嵌入該程序集-可是聽起來這對您來講不是問題。 只需在Visual Studio 2010中打開程序集的「屬性」選項卡,而後將「嵌入互操做類型」設置爲「 False」。 ip

編輯:另請參閱Michael Gustus的答案 ,從您使用的類型中刪除Class後綴。 資源


#3樓

擴展喬恩的正確答案。

這裏的問題是您正在將新的「嵌入互操做類型」(或NoPIA)功能與類類型結合使用。 「嵌入互操做類型」功能經過將全部類型從PIA(主互操做程序集)靜態連接到引用程序集而工做,從而消除了部署它的開銷。

此功能對PIA中的大多數類型都適用,但確實有一些限制。 其中之一是您不能嵌入類(這是一個服務問題)。 Misha有一篇詳細的博客文章,介紹了爲何不容許這樣作


#4樓

我在Office 2007的VB.NET 2013中遇到了相同的問題,此問題得以解決:

VS 2013 VB.NET項目>道具>參考> Microsoft Word 12.0對象庫>嵌入互操做類型:將True更改成False


#5樓

像Jan同樣,我花了一段時間才獲得它。.= S因此對於那些對挫折視而不見的人來講。

  • 右鍵單擊在「項目引用」下的解決方案資源管理器中添加的有問題的程序集。 (以我爲例)
  • 單擊屬性。
  • 並且應該有嵌入式Interop組件的選項
  • 將其設置爲False
相關文章
相關標籤/搜索