【发布时间】:2015-03-14 22:01:36
【问题描述】:
考虑场景:
您需要具有设计时支持的 Windows 窗体控件。这会创建对 System.Design 的依赖关系,而 4.0 客户端配置文件中不存在该依赖关系,因此您使用 4.0 完整框架来控制程序集。
然后在您想要使用该控件的项目中,它将需要 4.0 Full Framework,即使所需的功能仅用于设计时。
但是,您可以使用具有 Verbs 的 TabControl 和可能扩展 ParentControlDesigner 的设计器,该设计器将控件的依赖项置于 4.0 完整框架上,但您的项目将使用 4.0 客户端配置文件正常编译.
例如,TabControl 有动词和设计器,但在 4.0 客户端配置文件上运行良好。
有什么方法可以告诉程序集在设计时只使用参考!?由于这是不可能的,简单的把 any 项目使用 any 控件(使用自定义设计器),对完整 4.0 框架的依赖,但来自 .净没有?!
这是真的吗?为什么?
使用仅作为完整框架的 4.5 超出此问题的范围
【问题讨论】:
-
试图解决这个问题没有什么意义。控件设计器仅在 Visual Studio 中的设计时使用。在程序员的机器上,他总是安装完整版的 .NET。
-
@HansPassant 不,问题是控件具有 4.0 Full 框架没有问题,但是要在 用户计算机 上使用控件,它仍然需要 Full 框架。
-
不,没有人会查看属性或实例化设计器类。所以抖动没有理由加载 System.Design.dll。永远不会加载的缺失 DLL 永远不会生成异常。
-
我说的是编译时,你如何在没有
System.Design.dll的情况下派生你的设计器类!?您需要以 4.0 Full 框架为目标,即使在用户机器上它也不会加载该程序集。无论如何,@PatrickHofman 的回答是客观的并解决了“问题”。谢谢。