Visual Studio:你在类似项目中使用什么方法来“模板化”管道?

6
建立ASP.NET项目时,通常需要完成一定数量的样板或管道工作,这些工作在不同项目中通常是相同的。特别是在MVC和ALT.NET方法中更为如此。这些工作包括:IoC、ORM、解决方案结构(项目)、会话管理、用户管理、I18n等等。
我想知道你认为最好的“重用”这些管道工作的方法是什么?
1.是否有一个“主解决方案”,您可以将其复制并以某种方式重新命名?(目前我在某种程度上使用这种方法,但它非常混乱。我很想知道其他人如何做得更好)
2.主要依赖于共享库项目?(我发现这对于某些事情来说是合适的,但对于必须定制的事情来说太过受限)
3.代码生成工具,例如T4?(类似于SharpArchitecture使用的方法-我自己没有尝试过)
4.其他方法?
6个回答

5

3
我通常会选择使用T4模板和修改过的SubSonic 3版本。我可以利用数据库对我的领域进行建模,然后使用T4模板生成模型、相关控制器和视图,这样可以节省约50-60%的工作量并保持一致性。
然后,我会编写类的重写(部分)以及过滤器和扩展方法来定制应用程序。现在我熟悉了环境和正在做的事情,我可以在很短的时间内创建一个具有良好基础的基本模型。更重要的是,因为我创建了一组部分类文件,所以我可以反复生成而不失去我的“自定义”编码。
总之,这种方法适合我 :)

2

你可以采用有胡子、穿着T恤衫、敏捷的方式来完成这个任务,创建一个漂亮的模板并将其放入源代码控制中。因此,当你需要一个新项目时,只需检出模板即可。


听起来不错,但是项目名称、命名空间等怎么办? - UpTheCreek
嗯...抓住我了 :D 全局重命名? - Christian Wattengård
是的,我想是这样,但它看起来很混乱!感觉好像一定有一种“正确”的方法来处理这个问题,而我不知道。 - UpTheCreek
有人能对这种全局重命名的问题发表评论吗?是否存在任何需要注意的地方? - UpTheCreek

2
对于疯狂快速的 MVC 网站设置,我使用修改过的 T4 模板(使用 T4 Editor 创建)以及来自 Oleg Sych's blogs 的大量帮助来生成页面(用于典型的添加/编辑/索引页面),再加上一个称为 MVCCrud 的自动创建-更新-删除的令人惊叹的实现(如果 LINQ-to-SQL 是您首选的数据访问方式)。
使用修改过的 T4 模板和 MVCCrud,您可以在大约 4 分钟内创建具有错误处理和直观错误消息的完全功能实体(创建/编辑/列表/删除)。

我应该提到,使用MVCCrud的新jqGrid支持,您的网站将看起来非常棒(而且功能强大):) 奖励... - Jimbo
MVCCrud看起来很有趣 - 但它真的只支持Linq-2-SQL吗?这对我来说是个致命问题。 - UpTheCreek
@Sosh 不只是Linq-2-SQL,但目前只有一个Linq-2-SQL仓库,您可以创建自己的实现IMvcCrudRepository的仓库,或在控制器中手动映射代理(我从未尝试过使用除Linq-2-SQL之外的其他东西,但它设计为可被其他东西使用)。 - Matthew Hood

1
我使用新项目向导创建一个新项目,以便分配唯一的项目GUID。然后,如果有必要,我会使用“添加现有项”从类似的项目中复制项。
有时我会使用文件差异工具将引用从一个项目复制到另一个项目,否则我会手动添加引用。文件差异工具也可以用来包括相似的源文件,但是基础文件必须被复制,所以我更喜欢“添加现有项”。
我曾经使用T4生成解决方案和项目文件,但那显然是个极端情况,不是通常需要的东西。在这种情况下,我可能会将T4封装在类似于PowerShell的脚本中,以创建并填充其余目录结构。
我通常大量使用“共享库”,但不是特别针对这种情况。
总的来说,我并不经常重复使用项目之间的管道。更多情况下,我会在一个“原型”项目中进行编码,然后放弃它,并按照上述方法重新构建项目,并仅带有“非捆绑”代码。

1
我正在http://erictopia.com创建一个MVC2应用程序模板。它将包含我认为在MVC项目中应该有的所有基本项。这些包括BDD规范、ORM(NHibernate和可能的Lightspeed)、T4模板、自定义提供程序、ELMAH支持、CSS/Javascript压缩器等。

谢谢,我会关注你的帖子 - 祝你好运! - UpTheCreek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接