【问题标题】:ASP.NET MVC UI Project + Core Project SplitASP.NET MVC UI 项目 + 核心项目拆分
【发布时间】:2012-01-03 09:28:45
【问题描述】:

我见过使用 UI 项目和代码项目讨论 MVC 项目结构。例如

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 Express 中执行此操作,但我仍然在 UI 项目中拥有以下与网站无关的文件:.csproj、.csproj.user、项目 dll 文件和项目 pdb文件。

这违背了目的,因为拆分为两个项目的目的是让一个 UI 足够干净,可以直接作为网站运行,而不必过滤掉不必要的文件。

  • 我将原始项目复制到同一解决方案中包含的第二个项目中
  • 我从第一个项目中删除了代码文件,使其成为 UI 项目
  • 我从第二个项目中删除 UI 文件,使其成为代码项目
  • 我在 UI 项目中添加了对代码项目的引用。

我做错了吗?或者这是这种方法的限制?

任何可能帮助我使此配置正常工作的其他细节将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2


    【解决方案1】:

    将项目分离为单独的核心 + UI 项目的原因是为了清晰地分离源代码关注点。

    您提到的两个文件 CSPROJ 和 CSPROJ.USER 文件仅适用于 VWD。它们不是源代码,并且不会在您发布项目时进行部署。

    另外两个文件,核心 DLL 和核心 PDB,分别是运行时程序集和调试文件。您的 UI 项目将需要对这些的引用,以便能够运行编写并编译到核心项目中的代码。

    因此,在 UI 项目的 bin 文件夹中包含 Core.dll 和 Cord.pdb 是可以的,并且不会违反 SoC。 csproj 文件与代码无关,它们只是为了让 VWD 可以管理项目而存在。

    【讨论】:

    • 对不起,我所指的 DLL/PDB 文件是 UI 项目,它实际上没有代码,但仍然产生 3KB 的 DLL。关于 VWD 项目文件,是的,我理解,我只是习惯了另一种打开网站项目的方式,其中项目文件存储在网站之外。
    • 如果您的 UI 项目是 MVC3 项目,它会生成代码。请参阅 global.asax 文件。这会编译到您的 UI 的 dll 中。
    • 我将 global.asax.cs 移至核心项目,这意味着它是核心 DLL 的一部分,在 UI 项目中只留下 global.asax 本身,它只有 行 - 将还要进一步编译吗?
    • 进一步,制作一个简单的 Web 应用程序项目并从中删除所有内容(包括引用和属性),但仍编译为一个 3KB 的文件,该文件不需要运行该站点。我想我可以将 bin 路径设置在 web 目录之外,以避免拥有不必要的 DLL。或者只是忍受它。
    • 我终于找到了一个例子,它看起来和我的一样 - 一定是当时做的derans.blogspot.com/2010/01/…
    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多