最近在维护前人留下的项目中,发现有些WinForm项目可以以类库输出的形式,调试期间直接运行,以前从来没有注意到,感觉挺神奇。

今天创建了上面截图中的两个项目,进行了比较,表面上看着一模一样,好不容易才发现其中的隐藏的很深的一行信息。如下:

<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />

在项目文件csproj文件里的ItemGroup配置节点下。

把这一行,移植到普通winform可执行项目中去,终于起效果了。

太好了,手里还有数百个类似的项目,我都可以统一根据需要切换一下了。

百度了一下,已经有人10年前就发现了。下面是转载另一位网友的发现:

 

可能大家并不知道,同样是类库,如标准类库,控件类库,调试时截然不同,如果你创建工程的时候选择是控件类库,那调试时会自动启动一个控件容器测试工具,给你测试使用,但标准类库里如果有控件,直接调试时,会报没有启动项目,无法调试的信息,这两种类库有什么区别呢,表面上看什么都没有,其实编译后也是一样的,究其根源,在于新建项目时的选择,那么答案就很简单了,秘密在项目文件里,经过对比,发现控件类库的项目文件多了
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
标准类库的项目文件里只要补上这么一句,就可以直接测试控件了

 

恩,又补充发现了个问题,不是所有控件都能测试的,只有继承于UserControl的才可以

 

 

 

作者:Superlight
————————————————
版权声明:本文为CSDN博主「superlight」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/superlight/article/details/4190377

 

 

posted on 2021-12-11 17:14  Louis.Lu.Sz  阅读(354)  评论(0编辑  收藏  举报