ASP.NET Web用户控件库

我们有一堆用户控件,我们希望从Web应用程序中取出一个单独的程序集/库,我认为这就像创建类库并将ascx和ascx.cs文件拉入项目一样简单,并编译DLL以在我们的应用程序之间重用。

然而,事实并非如此。

我们的最终目标是拥有一个可分发的DLL(类似于Telerik如何分发其控件),我们可以将其投入任何Web应用程序。 这里的步骤: 将.ascx用户控件转换为可再发行的自定义控件非常简单,但是这会导致许多名为controlname.ascx.guid.dll的文件,这不是所需的结果。 我甚至无法使这些工作,因为我们有额外的类需要编译到程序集中。

有没有人在.NET中成功创建了一个Web用户控件库(我们在这里使用3.5)? 我似乎无法找到一个很好的分步指南。

如果你想在项目之间共享控件,我的经验表明,最好的方法是构建自定义的asp.net服务器控件而不是usercontrols。 用户控件适合在同一个项目中共享,但不能在多个项目中共享。

为此,我建议您在类库中构建一组自定义服务器控件,并在所有项目中使用它。

本书在解释创建服务器控件的基础知识方面做得非常好

编辑:
我正在开发一个.net Web服务器控件库。 我实际上没有按照任何分步指南。 我主要考虑使用上面提到的书和MSDN库+ Reflector,它是检查现有MS服务器控件并从中学习的好工具。

我意识到这是一个古老的话题,但如果有人在寻找创建可重用用户控件库的解决方案,那么事实certificate它非常简单。 以下是两个很好的分步指南以及源代码:

从MSDN: 将.ascx用户控件转换为可再发行的自定义控件

从Code Project: 直接创建ASP.NET用户控件库的方法

第二个链接为第一个链接创建的多个dll提供解决方案。

我找到了教程创建和使用用户控件库,但它看起来有点像黑客,因为它依赖于构建后的命令行事件将用户控件从一个项目复制到另一个项目。

我承认,有点晚了。

创建可重用的用户控件库; 创建一个新的Web应用程序项目,删除所有脚手架,添加一个(多个)用户控件。 从Web应用程序项目创建Web部署项目,在WDP属性中选择合并所有控件输出的选项并为库指定名称,并确保不选中允许此网站可更新。

构建WDP并使用Reflector检查生成的库; 你会看到它包含一个ASP命名空间,你精心设计的类型已被重命名,即usercontrol_ascx。 在您的目标网站中添加对WDP输出dll的引用,使用命名空间ASP和您在WDP中定义的程序集的名称将system.web / pages / controls节点添加到web.config。

现在,当您在页面中使用库时(例如),您必须使用在web.config中定义的别名和在Reflector中看到的typename,即

 

我发现在WDP上添加网站的依赖性是有用的,这样WDP就可以在网站之前构建; 现在我可以更改WAP中的用户控件,而无需记住在构建网站之前构建WAP。

我希望有人发现这个有用,因为它让我有一些白发到达这个阶段并且仍然让VS做“自动”的事情。