2

目前我有一個基本的Web應用程序,我們稱之爲「Framework.Presentation」。 此應用程序包含Web應用程序的所有基本項(默認代碼和一些默認模板)。 對於多個客戶,我想用客戶端特定的代碼和模板來擴展這個基礎應用程序。 基礎應用程序是一個Subversion存儲庫,對於每個客戶端我們都需要一個不同的Subversion存儲庫。VS2010基礎Web應用程序和擴展應用程序和版本控制

我腦子裏想的結構如下:

ClientProject 
    - Framework 
    - Framework.Presentation 
    - ClientProject.Presentation 

的「ClientProject」是它自己的存儲庫,與外部到我的框架資源庫。 在我的ClientProject.Presentation項目中,我將鏈接到Framework.Presentation項目。

這不是然而問題:

在Framework.Presentation我在App_Data文件夾一些模板,讓說:

App_Data 
    - Templates 
    - Default 
     - All the files here 

在我ClientProject.Presentation我可以添加相同,沒有文件夾'默認'。該應用程序將首先直接在App_Data/Templates之後,然後在App_Data/Templates/Default之後。

此外,Framework.Presentation有一個'/ Admin'文件夾,用戶應該能夠做一些管理員的web應用程序的東西。

如果我發佈ClientProject.Presentation,則所有文件都將落實到位。但是,如果我想在VS2010中調試應用程序,則Framework.Presentation的文件不會複製到ClientProject.Presentation項目的根文件夾,因此我無法調試所有功能。此外,應用程序無法找到他的默認模板。

我可以通過哪種方式解決這個問題?

+0

也許我可以修復它之前/後生成事件和(x)複製? –

+0

ClientProject解決方案中是否包含Framework.Presentation中的文件?在過去(規模小得多)我已經將一個外部文件「導入」到文件夾結構中的不同位置,並在解決方案中包含了一個鏈接。如果你認爲這可能是你想要的,我可以用一個例子進行擴展。 – Mightymuke

+0

Framework.Presentation項目包含在我的ClientProject解決方案中,如果這是你的意思 –

回答

0

OK,一個潛在的解決方案是...

使用你的文件結構,你的項目ClientProject.Presentation添加到解決方案。

不要添加Framework.Presentation項目。相反,您可以將每個文件單獨添加到ClientProject.Presentation,作爲鏈接文件。 (Add - >Existing Item,選擇文件,單擊添加按鈕上的向下箭頭,並選擇Add As Link)。

這將確保文件仍保存在文件系統中的適當位置,但IDE將知道它們在解決方案中的位置。

唯一的缺點是這將是相當乏味的,取決於您的Framework.Presentation項目的大小。

+0

當我向Framework.Presentation添加一些新文件時,我必須更新所有不同的客戶端項目以添加文件。我不認爲這是一個好的解決方案:) –

0

您可能會創建一個Framework.Presentation DLL,它將被ClientProject.Presentation項目引用。您需要將您的Framework文件配置爲嵌入式資源。我沒有嘗試過,所以我不確定它會如何工作。

+0

我會稍後再試。但是,我不認爲它會找到這些文件。 –

0

您可以按照建議使用預生成事件將所有文件從Framework.Presentation文件夾複製到ClientProject.Presentation。不過,我懷疑這可能會變得混亂。例如:

  • 如何處理文件名衝突?
  • 您是否需要排除ClientProject.Presentation文件夾中的Framework.Presentation文件,以免意外將它們提交給顛覆項。
  • 您是否還需要自動更新ClientProject.Presentation項目以引用這些文件?如果不是,他們將如何構建和調試?如果是這樣,你如何處理項目重新加載?
  • 你會如何處理額外的文件進行清理構建,構建服務器集成,部署包等
+0

我也想過這個解決方案。然後我應該在Framework.Presentation中創建一個批處理文件,它複製我需要的文件,但不覆蓋它們。但我不確定這是否是正確的方式 –

0

創建包裝解決方案。在這你應該有你的所有項目。添加後期製作步驟來完成所有的複製等。你不會爲你的問題找到一個簡單或乾淨的解決方案。如果您對MSBuild不熟悉,您很快就會發現。它當然有能力做你想做的一切,這將是乏味的。

+0

這對於CI來說可以,但不適合本地開發。我相信你仍然遇到類似於已經提到的問題? (文件名衝突,項目文件更新等) – Mightymuke

+0

@Mightymuke好的我正在編輯一個關於如何構建您的項目在本地構建的建議,雖然它不會很簡單。您是否預計ClientProjects的數量不會過多(如超過30個)? – evanmcdonnal

+0

@Mightymuke編輯我的建議爲本地構建。祝你好運。 – evanmcdonnal