我们构建了许多组件,WinForms,Workflow活动等,我们经常使用的是“Designer”属性。
初始开发期间的一般做法是,Designer属性与[Designer(typeof(DesignerType))]
样式一起使用以使事情正常工作 - 然后,将其转换为[Designer("AssemblyQualifiedTypeName")]
,这允许从组件中删除设计器DLL引用列表 - 这消除了组件使用者必须使用其产品部署设计器DLL的需要。
这种将设计时和运行时代码分成两个单独的DLL的做法是常见的做法,也是我支持的一种做法。
负面影响,是'程序集限定类型名称'将包含设计器dll的程序集版本,因此当版本增加时,必须在整个产品中执行“搜索和替换”以确保它们已更新这个设计师的所有“松散参考”。
最后,我的问题: 任何人都可以推荐一个不依赖于“搜索和替换”的最佳实践,它可以管理所有这些引用,以确保它们始终是最新的吗? 我们经常让一个懒惰的开发人员忘记更新引用字符串,导致组件的新版本链接到设计器DLL的先前版本 - 当然不会部署,因此设计时支持丢失。 也许某种形式的编译指示,宏,构建脚本,魔法属性,我不知道,但必须有更好的方法来做到这一点。
任何? (感谢)
答案 0 :(得分:1)
为什么不在内部创建一个使用Managed Addin Framework或Activator.CreateInstance之类的设计器来挑选和展示设计师呢?使用此技术,Designer属性永远不会改变...
答案 1 :(得分:0)
像微软那样做。看一下Reflector中的AssemblyRef类(System.Windows.Forms.dll)。