Asp.net

如何在 ASP.NET 中的 Web 應用程序之間共享使用者控制項?

  • June 11, 2009

這個問題是我關於在 web 應用程序之間共享資源的問題的後續問題,因為我還沒有找到一個好的解決方案。

我有一個 Web 應用程序,其中包含由其他三個 Web 應用程序共享的使用者控制項和資源。

解決方案
|
+-CommonControlsWebApp
| +- 資源
| | +- 圖片
| | +- 腳本
| | +- 樣式表
| +- 使用者控制項
|
+-WebApp1
|
+-WebApp2
|
+-WebApp3

這是我到目前為止所知道的:

  • 我無法將 CommonControlsWebApp 編譯成單個 dll,因為我正在創建使用者控制項。這僅適用於自定義伺服器控制項,其中所有內容都在程式碼隱藏文件中。所以我需要一種在四個項目之間共享 ascx 文件的方法。
  • 將文件從 CommonControlsWebApp 複製到其他三個項目不會在解決方案資源管理器中更新它們的文件。當在 CommonControls 中添加或重命名文件時,我必須在所有三個 WebApps 中都“添加擴展項”。
  • 更改為網站模型可以解決這個問題,但如果我這樣做,我擔心 WebApp1-3 的編譯時間。
  • “添加為連結”不適用於目錄。
  • 我可以使用 Subversion 在項目之間共享文件,但我相信,如果我正在開發一個必須通過其中一個 WebApp 進行測試的使用者控制項,這將需要我一直重新簽入和簽出文件。

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

引用自:https://stackoverflow.com/questions/710076