簡體   English   中英

具有設計支持的.NET Windows窗體控件可在4.0 Client Profile上工作

[英].NET Windows Forms Controls with Design support work on 4.0 Client Profile

考慮這種情況:

您需要具有設計時支持的Windows窗體控件。 這將創建對System.Design的依賴關系,而該依賴關系在4.0 Client Profile中不存在,因此您將4.0 Full Framework用於控件程序集。

然后,在要使用該控件的項目中,它將需要4.0 Full Framework,即使所需的功能僅用於設計時也是如此。

但是,然后,您可以使用具有VerbsTabControl和可能擴展ParentControlDesigner的設計器,該控件將控件的依賴項放在4.0 Full框架上,但是您的項目可以使用4.0 Client Profile很好地進行編譯。

來自Microsoft DotNet的TabControl
例如, TabControl具有動詞和設計器,但在4.0 Client Profile上運行良好。

有什么方法可以告訴程序集在設計時只使用參考! 如果不可能,那么簡單地放置任何使用任何控件的項目(帶有自定義設計器),對Full 4.0框架的依賴,但是來自.Net的“本機”項目就不行!

這種說法是真的嗎? 為什么?

好吧,例如,當您擁有Form類時,它將使用DesignerAttribute裝飾,該屬性在客戶端配置文件中可用。

它的定義是:

[Designer( "System.Windows.Forms.Design.FormDocumentDesigner, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         , typeof(IRootDesigner)
         )
]

客戶端配置文件中也提供IRootDesigner接口,因此實際上沒有任何內容引用完整的框架,只有string引用了它,但在編譯時未對其進行求值。

因此,您不需要完整的框架來使用Form類,但是需要它來訪問設計器。 這將讀取string ,並嘗試加載包含設計器的程序集,該程序集確實需要完整的框架,該框架在Visual Studio安裝的系統上始終可用。

如果要自己實現,則必須將設計器和控件類拆分為不同的程序集,並引用該框架的另一個版本。

暫無
暫無

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

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