我正在为工作创建 MVC starterkit,但在创建多项目模板时遇到问题,该模板在创建后不需要大量手动修改。
我拥有的是 4 个相互依赖的项目:
- StarterKit.Common - 无依赖
- StarterKit.DAL - 对 StarterKit.Common 的依赖
- StarterKit.BL - 依赖于 StarterKit.Common 和 StarterKit.DAL StarterKit.Web - 依赖于其他三个
我尝试使用导出模板向导导出每个项目,创建一个根 .vstemplate 文件并将其全部压缩。虽然这可行(我可以基于这个模板创建一个新的解决方案),但它有一些严重的问题。
首先,导出将每个项目的整个命名空间替换为 $safeprojectname$,即 StarterKit.DAL => $safeprojectname$、StarterKit.Web => $safeprojectname$ 等。
这意味着当新项目创建时(我们称之为 XXX),之前在命名空间 StarterKit.Web 中的内容现在最终在 XXX 命名空间中,而之前的 StarterKit.BL也最终在 XXX 命名空间中!
这显然行不通。
其次,一些 using 语句根本没有被替换。例如using StarterKit.Common;
在 web 项目中没有被替换,因为它没有正确的命名空间(即 StarterKit.Web)。
第三,我有一些 .tt 脚本,其中包含我想要替换的 using 语句,但即使我ReplaceParameters="true"
在项目中设置,这些都没有触及。
我还研究过创建一个 VSIX 项目,但坦率地说,我不知道如何使用它。对我来说,它看起来更像是一个 zip 实用程序,它为您创建 .vstemplate 并为我将 .zip 重命名为 .vsix。
我需要做的是:
- 将所有项目打包在一个部署文件中,作为 VS 中的“新项目”模板提供
- 创建新项目时,将 .csproj、.cs、.cshtml 和 .tt 文件中的所有“StarterKit”命名空间引用替换为用户选择的解决方案名称
- 找出一个简单的过程,只要基础项目发生更改(文件添加/删除、重命名、内容更改等),我就可以轻松更新模板
有谁知道这是否可能?