我正在用C#在.NET 4.0框架(beta2)上建立一個Web應用程序。 git
當我嘗試使用名爲「 ActiveHomeScriptLib」的程序集時,出現如下錯誤: 瀏覽器
沒法嵌入互操做類型「 ActiveHomeScriptLib.ActiveHomeClass」。 請改用適用的界面。 app
當我將框架更改成版本3.5時,我沒有任何錯誤。 框架
什麼是互操做類型?爲何僅在使用4.0框架時纔會發生這種狀況? spa
http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307 code
發生此錯誤的緣由是,新項目中引用的TestStand API Interop程序集的Embed Interop Types屬性的默認值爲true。 若要解決此錯誤,請按照下列步驟操做,將Embed Interop Types屬性的值更改成False:在解決方案資源管理器中,在項目的引用部分中選擇TestStand Interop程序集引用。 在屬性瀏覽器中找到「嵌入互操做類型」屬性,並將其值更改成False。 對象
.NET 4.0容許將主互操做程序集(或更確切地說,您須要的互操做程序集)嵌入到程序集中,所以您無需將它們與應用程序一塊兒部署。 blog
不管出於何種緣由,都沒法嵌入該程序集-可是聽起來這對您來講不是問題。 只需在Visual Studio 2010中打開程序集的「屬性」選項卡,而後將「嵌入互操做類型」設置爲「 False」。 ip
編輯:另請參閱Michael Gustus的答案 ,從您使用的類型中刪除Class
後綴。 資源
擴展喬恩的正確答案。
這裏的問題是您正在將新的「嵌入互操做類型」(或NoPIA)功能與類類型結合使用。 「嵌入互操做類型」功能經過將全部類型從PIA(主互操做程序集)靜態連接到引用程序集而工做,從而消除了部署它的開銷。
此功能對PIA中的大多數類型都適用,但確實有一些限制。 其中之一是您不能嵌入類(這是一個服務問題)。 Misha有一篇詳細的博客文章,介紹了爲何不容許這樣作
我在Office 2007的VB.NET 2013中遇到了相同的問題,此問題得以解決:
VS 2013 VB.NET項目>道具>參考> Microsoft Word 12.0對象庫>嵌入互操做類型:將True更改成False
像Jan同樣,我花了一段時間才獲得它。.= S因此對於那些對挫折視而不見的人來講。