如何在ASP.NET中的Web应用程序之间共享用户控件?

前端之家收集整理的这篇文章主要介绍了如何在ASP.NET中的Web应用程序之间共享用户控件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题是关于 sharing resources between web applications的问题的后续行动,因为我还没有找到一个很好的解决方案.

我有一个Web应用程序,其中包含三个其他Web应用程序共享的用户控件和资源.

Solution
|
+-CommonControlsWebApp
| +- resources
| |  +- images
| |  +- scripts
| |  +- stylesheets
| +- UserControls
| 
+-WebApp1
| 
+-WebApp2
| 
+-WebApp3

这就是我现在所知道的:

我无法将CommonControlsWebApp编译成一个dll,因为我正在创建用户控件.这只能使用自定义服务器控件,其中所有内容都在代码隐藏文件中.所以我需要一种在四个项目之间共享ascx文件的方式.
>将CommonControlsWebApp中的文件复制到另外三个项目中,不会在解决方案资源管理器中更新其文件.当在CommonControls中添加重命名文件时,我将不得不在所有三个WebApps中“添加项目”.
>更改为网站模型将会弥补这一点,但是如果我这样做,我担心WebApp1-3的编译时间.
>“添加链接”不适用于目录.
>我可以使用Subversion来共享项目之间的文件,但我相信,如果我正在开发一个用户控件,我必须通过一个WebApps进行测试,这将需要一直检查文件.

ASP.NET没有一个很好的解决方案吗?你们如何组织大型Web应用程序?

编辑:非常感谢所有的答案.现在我将使用构建事件复制我的用户控件,然后查看是否有时间将其重构为服务器控件.

解决方法

在我现在的公司,我们的方式是确保CommonControlsWebApp
是WebApplication,而不是网站.然后,您将使用文件夹的名称来帮助将其标识为与各个Web应用程序不同的常见文件夹. (CommonUserControls而不仅仅是UserControls)

在其他Web应用程序中,您可以为CommonUserControls等创建一个虚拟目录,并为CommonControlsWebApp.dll添加基于文件的引用

这要求您使用IIS进行开发(而不是casini),Visual Studio不会相信控件真的存在,但它将在运行时工作,只需对blahblah.ascx或blahblah.master的警告进行构建即可.路径无效.

如果您使用常用的母版页和Visual Studio 2008,您将需要SP1 for 2008,并在各个Web项目的根目录中使用__fallback.master进入设计模式.

但是,我在另一个线程上看到了这一点,我将会进一步研究如下:
http://webproject.scottgu.com/CSharp/UserControls/UserControls.aspx

猜你在找的asp.Net相关文章