当前位置: 首页 > news >正文

【研发工具】.Net创建多项目模板(Visual Studio)

一、目的

一些复杂项目往往是多个项目程序集组合起来的,这里主要记录一下多项目模板如何创建。  创建基于多项目模板的项目时,模板中的每个项目都会添加到解决方案中。
        ps:建议优先查看 【研发工具】.Net创建项目模板(Visual Studio)-CSDN博客

二、创建多项目模板

2.1 多模板文件的特性和文件内容

        多项目模板包含两个或多个项目模板,以及一个 ProjectGroup 类型的根模板。
        多项目模板的行为不同于单项目模板。 多项目模板具有以下独特特征:
  • 使用多项目模板创建新项目时,无法向此模板中的各个项目分配名称。 请改用 vstemplate 文件中 ProjectTemplateLink 元素上的 ProjectName 属性为每个项目指定名称 。
  • 多项目模板可能包含不同语言的项目,但仅可将整个模板本身放置在一个类别中。 在 vstemplate 文件的 ProjectType 元素中指定模板类别。
        多项目模板必须包括以下各项,并压缩为 .zip 文件:
  • 整个多项目模板的根 vstemplate 文件。 此 vstemplate 根文件包含在创建新项目的对话框中显示的元数据。 它还指定在何处查找模板中项目的 vstemplate 文件。 此文件必须位于 .zip 文件的根目录中。
  • 两个或多个文件夹,其中包含完整的项目模板所需的文件。 文件夹包含项目的所有代码文件,以及项目的 vstemplate 文件。
        例如,多项目模板 .zip 文件包含以下文件和目录:
ps:多项目文件中的单个项目,例如"muliti.client"中的内容可以参考单项目模板,使用导出模板功能到处该内容。下述VSTemplate的xml格式文件是多项目模板的内容。
<VSTemplate Version="3.0.0" Type="ProjectGroup"xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"><TemplateData><Name>Multi-Project Template Sample</Name><Description>An example of a multi-project template</Description><Icon>__TemplateIcon.png</Icon><ProjectType>CSharp</ProjectType><PlatformTag>多项目测试模板</PlatformTag></TemplateData><TemplateContent><ProjectCollection><ProjectTemplateLink ProjectName="$safeprojectname$.Client" CopyParameters="true">muliti.client\MyTemplate.vstemplate</ProjectTemplateLink><ProjectTemplateLink ProjectName="$safeprojectname$.Common" CopyParameters="true">Muliti.Common\MyTemplate.vstemplate</ProjectTemplateLink></ProjectCollection></TemplateContent>
</VSTemplate>

2.2 多项目模板 vstemplate 文件与单项目模板的差别

  • VSTemplate 元素的 Type 属性有 ProjectGroup 而没有 Project 值 。 例如:
<VSTemplate Version="2.0.0" Type="ProjectGroup"xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  • TemplateContent 元素包含 ProjectCollection 元素,它有一个或多个 ProjectTemplateLink 元素,这些元素定义了所包含项目的 vstemplate 文件的路径 。 例如:
<TemplateContent><ProjectCollection><ProjectTemplateLink ProjectName="$safeprojectname$.Client" CopyParameters="true">muliti.client\MyTemplate.vstemplate</ProjectTemplateLink><ProjectTemplateLink ProjectName="$safeprojectname$.Common" CopyParameters="true">Muliti.Common\MyTemplate.vstemplate</ProjectTemplateLink></ProjectCollection>
</TemplateContent>

2.3 从现有解决方案中创建多项目模板

        1.创建一个解决方案,并添加两个或多个项目。

        2.自定义项目,直到可将其导出到模板。(参考单项目模板创建即可)

如果使用的是 模板参数 并且想要引用父模板中的变量,请在参数名称前加上前缀 ext_。 例如 $ext_safeprojectname$。 此外,将“ProjectTemplateLink”元素的“CopyParameters”属性设置为“true”。

        3.在“项目”菜单上,选择“导出模板” 。(参考单项目模板创建即可)

        4.在“选择模板类型”页上,选择“项目模板” 。 选择要导出到模板的一个项目,然后选择“下一步”。 (你将针对解决方案中的每个项目重复这些步骤。)

        5.在“选择模板选项”页面上,输入模板的名称和可选说明、图标和预览图像。 选择“完成”。项目会导出到一个 .zip 文件中,并放在指定的输出位置。

ps:每个项目都必须单独导出到一个模板,因此请为解决方案中的每个项目重复上述步骤。

        6.为模板创建一个目录,并为每个项目提供一个子目录。

        7.将每个项目的 .zip 文件的内容提取到创建的相应子目录中.

        8.在基目录中,创建扩展名为“.vstemplate”的 XML 文件。 此文件包含多项目模板的元数据。 有关文件结构,请参阅以下示例。 确保为每个项目的 vstemplate 文件指定相对路径。(6、7、8内容如下图)

        9.选择基目录中的所有文件,然后通过右键单击或从上下文菜单中选择“发送至”>“压缩的文件夹(zip 格式)” 。

        10.将 .zip 文件复制到用户项目模板目录中。 默认情况下,此目录为 %USERPROFILE%\Documents\Visual Studio \Templates\ProjectTemplates。

        11.在 Visual Studio 中,选择“文件”>“新建”>“项目”,并验证是否显示了模板 。

三、文章总结

文章基于微软官网中的模板创建而编写,也是因为当下公司内部为了快速开发一些项目,同时避免技术栈不一致,因此考虑使用项目模板的方式进行统一。
http://www.lqws.cn/news/441739.html

相关文章:

  • 轻量化社交管理方案:Skout与云手机的巧妙搭配
  • 暑期前端训练day1
  • SpringBoot扩展——应用Web Service!
  • 【 感知集群】大规模分布式基础设施的AI赋能蓝图
  • 深度学习之目标检测YOLO简介和YOLO v1模型算法流程详解说明(超详细理论篇)
  • Redis
  • 动态规划算法思路详解
  • 【高录用】2025年数字金融,大数据与商业管理国际会议 (DFBBM 2025)
  • 蚀刻效果解释
  • LeetCode | 一文弄懂树:定义、原理、应用与题型分类
  • SpringBoot新闻项目学习day3--后台权限的增删改查以及权限管理分配
  • 算法导论第十九章 并行算法:解锁计算新维度
  • Oracle 数据库性能优化之重做日志(redo)
  • 刘波卸任OPPO法定代表人、经理等职务,段要辉“接棒”
  • FPGA基础 -- Verilog 禁止语句
  • django rest_framework 自定义403 Forbidden错误页面
  • NetworkManager介绍与用法
  • 【Bluedroid】蓝牙启动之 btif_init_ok 流程源码解析
  • 二叉树基本学习
  • “开放原子园区行”太原站:openKylin以开源之力,赋能产业发展
  • Go 运维巡检系统(opsxj)开发与实践
  • 01.线性代数是如何将复杂的数据结构转化为可计算的数学问题,这个过程是如何进行的
  • 前端跨域解决方案(5):websocket
  • SQL注入安全研究
  • JMeter 高阶玩法:分布式压测的技术核心技术要点
  • 容器运行时保护:用Falco构建云原生安全防线
  • Java同步机制四大工具对比
  • 国产USRP X440 PRO:超大带宽、多通道相参同步的旗舰型软件无线电设备
  • 自主学习-《WebDancer:Towards Autonomous Information Seeking Agency》
  • leetcode:461. 汉明距离(python3解法,数学相关算法题)