2009-01-21 65 views
4

在我們有大約20個不同的web應用程序的內部網上工作 - 一些.net,一些經典的asp。複雜的ASP.NET web應用程序和nant

當前每個.net應用程序都是它自己的解決方案。這樣做有一些優點 - 我們可以構建&只部署一個應用程序,而不影響其他應用程序,並且所有應用程序共享一個會話 - 但我們無法使用母版頁,並且使用本地化資源,共享css和js存在真正的挑戰等構建&部署完全是手動完成的,這是一個真正的問題。

我試圖建立一個結構,使我們能夠利用VS2008的功能,但仍然能夠更新一個應用程序而不影響其他應用程序,同時仍然使用母版頁和本地化資源等功能以及共享會話之間的會話(所以我們不能爲每個應用程序設置虛擬目錄)。

如果我成立了一個解決方案,看起來像:

 
/Root 
- App_GlobalResources/ 
- shared 
    -- masterpages/ 
    -- css/ 
- App1/ 
- App2/ 
... 
- AppN/ 
.. 
- ClassicASP1/ 

那麼問題是,構建只是產生一個DLL(Root.dll) - 這根本不會擴展到20+的應用程序,所有其中有不同的開發週期。

是否有可能(使用nant或其他構建工具)構建多個DLL?在這種情況下,我想結束Root.dll(至少包含全局資源)和App1.dll和App2.dll。

任何其他建議或參考我應該看看?

回答

1

我不確定你可以做你想做的事,可悲的是。 VS傾向於爲每個獨特的項目創建一個DLL(而不是解決方案),並且它看起來只有一個項目,因此只有一個DLL。

我建議您爲每個應用程序保留一個項目(csproj),但使用NANT將它們全部構建(即一次一個,按順序一起構建),然後將它們全部打包以便部署。這樣你可以做單點部署,但仍然保持應用程序的獨立性。

我很驚訝你不能在子文件夾中使用母版頁。您需要爲每個AppN文件夾複製這些文件夾,但同樣,在構建部署包時,可以使用NANT從常見位置獲取這些文件夾。

編寫構建和部署腳本需要一段時間才能找到正確的答案,但我發現一旦完成,它會很快爲自己付出 - 即使唯一的付款是您的理智!

0

有一個解決這個問題的方法。簡而言之,它需要創建一個網站項目(可以有主頁和什麼)和幾個子目錄,每個子目錄都包含一個Web項目。在主Web項目中,您從項目中排除了子項。然後將項目文件添加到解決方案。這(更新)link告訴你所有關於它。

-Edoode

+0

感謝您的鏈接,但該解決方案僅適用於在IIS下運行多個應用程序作爲單個應用程序,似乎只適用於1.1。 我們試圖解決的問題是有多個網絡應用程序共享共同的母版頁,本地化資源等 - 這不在該鏈接中解決。 – chris 2009-01-21 15:30:07

+0

嗯,你說得對。我更新了鏈接。該頁面描述了我的(工作)設置與子項目。 – edosoft 2009-01-21 15:56:49

0

我會建議使用MSBuild而不是Nant。它更適合視覺工作室。