本人设计的解决方案中包含两个项目,1个是控件程序集(A),另一个是相关的设计器程序集(A.Design),都有强名称。
A.Design引用了A,而在A中通过使用DesignerAttribute(string,type)来指定设计器是,string中包含了设计器的完整名称,形式如 "classname,assembly,language,key=030203220200xxx ".
问题是这样的话,在启动工程(一个exe程序)中无法加载设计器,说找不到设计器,将A.Design.dll放入Gac也不管用。请问A.Design.Dll这个程序集应该放在哪个目录下?照理说启动工程中是不需要引用A.Design.Dll的。
另一个问题我做的控件程序集(A)放入GAC后,为什么VS2005的 "添加引用/.net "对话框中仍然没有将它列出来?工具箱中的 "选择项/.net组件 "中也没有列出来。是否需要注册之类的工作?如果是这样今后发布要怎么办?附带一下,我的程序集加入GAC后连Reflector(反编译工具)也找不到。
各位做控件的都怎么做设计时测试?有什么好办法大家交流一下。
分不够另开贴。
谢谢大家。
------解决方案--------------------------------------------------------
一般一个设计器只针对一个控件,所以我都是把设计器和控件都放在一个项目下,感觉如果分开会有循环引用的问题。
设计时调试,可以另开一个vs.net ,用附加进程的方式来调试
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
有情帮顶
------解决方案--------------------------------------------------------
A:把A.design.dll放在exe下试下,正常的情况下,runtime时可以不要designtime的设计器。
B:关于加入GAC,你的理解方式可能有些问题。
比如有C:\A.dll,通过gacutil加入GAC中,在“添加引用”中是没有A.dll的,而是应该“浏览”来选择C:\A.dll来实现添加引用。
组件、控件的调试有两种方法:
1、http://www.cnblogs.com/mapserver/articles/345918
2、比如你的Solution叫Demo1,Demo1有控件工程叫A,在Solution Explorer里选中A工程,
a:点右键选“Properties”——〉“Debug”——〉“Start Action”——〉“Start external program”选择“C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe(我的vs安装在C盘下,如果你的不安装在C盘下,请改相应的路径)”
b:再把A设为启动项目
c:F5启动Debug
d:打开Demol