2012-01-03 81 views
1

我見過使用UI項目和代碼項目討論了MVC項目結構。例如ASP.NET MVC UI項目+核心項目拆分

http://lostechies.com/jimmybogard/2009/12/09/organizing-asp-net-mvc-solutions/ http://stackoverflow.com/questions/4357911/an-ideal-folder-structure-for-net-mvc

我試圖做到這一點在Visual Web Developer中2010速成,但我仍然最終在UI項目中具有以下非網站相關文件:.csproj,.csproj.user,項目dll文件和項目pdb文件。

這破壞了目的,因爲拆分爲兩個項目的目的是爲了讓UI足夠乾淨,可以直接作爲網站運行,而無需過濾掉不必要的文件。

  • 我複製了原項目到做它UI項目
  • 我從第二個項目決策刪除UI文件包含相同的解決方案
  • 我刪除從第一個項目的代碼文件中的第二個項目它的代碼項目
  • 我在UI項目中添加了對代碼項目的引用。

我做錯了嗎?或者這是這種方法的侷限性嗎?

任何額外的細節可能會幫助我得到這種配置工作,將不勝感激。

回答

1

將項目分離爲單獨的核心+ UI項目的原因是清楚地分離源代碼問題。

您提到的兩個文件CSPROJ和CSPROJ.USER文件僅適用於VWD。它們不是源代碼,並且在發佈項目時不會部署。

其他2個文件,核心DLL和核心PDB,分別是運行時程序集和調試文件。您的UI項目需要對這些參考進行引用,以便能夠編寫和編譯到核心項目中的代碼。

因此,在您的UI項目的bin文件夾中有Core.dll和Cord.pdb是可以的,並且不違反SoC。 csproj文件與代碼無關,它們只在那裏才能讓VWD管理項目。

+0

對不起,我所指的DLL/PDB文件是實際上沒有代碼但仍生成3KB DLL的UI項目。 關於VWD項目文件,是的,我明白,我只是習慣於打開網站項目的其他方式,其中項目文件存儲在網站之外。 – 2012-01-03 20:49:28

+0

如果您的UI項目是一個MVC3項目,它確實會生成代碼。請參閱global.asax文件。這是編譯到你的用戶界面的DLL。 – danludwig 2012-01-03 20:53:26

+0

我將global.asax.cs移動到了核心項目,這意味着它是核心DLL的一部分,只留下了只包含<%@ Application%>一行的UI項目中的global.asax本身 - 是否還會繼續編譯? – 2012-01-03 21:00:05