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

标签 asp.net visual-studio-2008 web-applications user-controls resources

这个问题是对我关于 sharing resources between web applications 的问题的跟进。 ,因为我还没有找到好的解决方案。

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

解决方案
|
+-CommonControlsWebApp
| +- 资源
| | +- 图像
| | +- 脚本
| | +- 样式表
| +- 用户控件
|
+-WebApp1
|
+-WebApp2
|
+-WebApp3

这是我目前所知道的:

  • 我无法将 CommonControlsWebApp 编译成单个 dll,因为我正在创建用户控件。这仅适用于自定义服务器控件,其中所有内容都在代码隐藏文件中。所以我需要一种方法来在四个项目之间共享 ascx 文件。
  • 将 CommonControlsWebApp 中的文件复制到其他三个项目中不会更新解决方案资源管理器中的文件。在 CommonControls 中添加或重命名文件时,我必须在所有三个 WebApp 中“添加扩展项”。
  • 更改为 Web Site 模型可以解决此问题,但如果我这样做,我担心 WebApp1-3 的编译时间。
  • “添加为链接”不适用于目录。
  • 我可以使用 Subversion 在项目之间共享文件,但我相信,如果我正在开发必须通过其中一个 WebApp 进行测试的用户控件,这将需要我一直重新检入和 check out 文件。

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

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

    最佳答案

    我们现在公司的做法是确保 CommonControlsWebApp
    是一个 Web 应用程序,而不是一个网站。然后,您可以使用文件夹名称来帮助将其识别为与各个 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 - 如何在 ASP.NET 中的 Web 应用程序之间共享用户控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710076/

    相关文章:

    ASP.NET GridView 项目模板

    MySQL .Net Provider 5.2 未显示在 VS 2008 Express 的数据源对话框中

    php - 在 php 应用程序中保持登录状态 +1 周

    visual-studio - 什么会导致Visual Studio一直重建我的整个解决方案?

    java - 如何使用MVC和三层架构分层传输数据?

    python - 如何使用户名和电子邮件是唯一的..使用 WTFroms

    asp.net - 从 ASP.NET 页面下载时,.docx 文件被损坏

    javascript - 是否可以在未连接互联网时继续使用 Web 应用程序?

    c# - 在代码中访问 WebResource.axd 文件内容时出现问题

    c# - 调试时如何启动带有参数的程序?