![](/img/trans.png)
[英]Deploying windows forms project without installing .NET 4.0 client
[英].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,即使所需的功能僅用於設計時也是如此。
但是,然后,您可以使用具有Verbs
的TabControl
和可能擴展ParentControlDesigner
的設計器,該控件將控件的依賴項放在4.0 Full框架上,但是您的項目可以使用4.0 Client Profile很好地進行編譯。
例如, 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.