Asp.net

如何在 Visual Studio 中的 Web 應用程序之間共享公共 Web 資源?

  • September 12, 2017

我有三個 Web 應用程序項目,它們共享一個通用的自定義伺服器控制項庫。共享文件背後的程式碼很容易 - 它們被編譯成我在其他項目中使用項目引用引用的 dll。但是如何處理像 JavaScript、樣式表和圖像這樣的文件呢?我正在嘗試這樣做“Visual Studio 方式”,以便盡可能容易地理解和調試。

目前的設置有點像這樣:

CommonControlsWebApp
+- 自定義控制項
+- 資源
+- 圖片
+- 腳本
+- 樣式表

WebApp1
+- 資源*

WebApp2
+- 資源*

WebApp3
+- 資源*

*) IIS 中的虛擬目錄。

每個 Web 應用程序上的虛擬目錄都指向我的 CommonControlsWebApp 中的資源目錄。這是在 IIS 中配置的。Visual Studio 無法理解此連結,因此調試需要我手動附加到 IIS 程序。

另一種解決方案可能是使用 WebResourceAttribute 將每個資源包含在公共 dll 中。但是,當我查看網頁的原始碼時,這會將src連結變成類似 WebResource.axd?d=GUID 的東西,而且我擔心這會使調試變得非常混亂。

第三種解決方案是使用 Subversion 在所有三個解決方案中包含相同的文件。團隊中沒有人以前嘗試過這個,所以我們不確定它的效果如何。

我覺得我缺少一些關於如何設置項目的很棒的、明顯的解決方案。有什麼建議麼?

許多控制項開發人員使用您描述的第二種方法捆綁他們的網路資源 - 將它們作為嵌入資源添加到 .dll 中。這樣,您可以分發控制項,而不必將一堆文件夾和文件複製到每個想要使用它們的網站,並確保文件夾路徑全部匹配等。您還可以獲得更容易本地化/國際化的優勢你的資源。

但是,WebResource.axd 是一個缺點。您通常可以使用諸如 Firebug 之類的東西“調試”URL,以查看從請求中實際返回的內容,但我同意,如果某些東西不能正常工作,這可能會很痛苦。另一個缺點是,如果您有幾十個資源用於一個伺服器控制項,特別是如果它們被多次引用(想想在節點上有數百個小圖像的樹視圖) - 那麼 URL 可以為最終添加大量實際字節HTML 輸出。

如果您的分發/本地化需求超過您的優化/調試需求,我會考慮嵌入資源。

如果沒有,那麼您絕對可以執行 #3 - 使用 Subversion 將所有內容複製到您的網站中。查看SVN Externals了解如何設置它。現在花一點時間學習它可能會為您節省大量時間!

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