如何确定Visual Studio 2017创建的C#项目所使用的模板
嘿,这个问题我之前帮朋友处理过,给你几个实用的思路来找出项目当初用的VS2017模板,顺便聊聊怎么理解这些模板的作用:
一、如何确定项目当初使用的VS2017模板
- 检查项目文件(
.csproj):打开项目的.csproj文件,查找<TemplateGuid>节点——不少模板会直接留下这个标识。如果找不到这个节点,就看<ProjectTypeGuids>里的GUID组合,每个C#模板都对应特定的GUID。比如:- 控制台应用/类库的基础GUID是
FAE04EC0-301F-11D3-BF4B-00C04F79EFBC - WPF项目的GUID是
60DC8134-EBA5-43B8-BCC9-BB4BC16C2548 - ASP.NET MVC项目的GUID是
E3E379DF-F4C6-4180-9B81-6769533ABE47
把找到的GUID和这些常见值匹配,就能快速定位模板类型。
- 控制台应用/类库的基础GUID是
- 分析项目初始文件结构:模板会生成固定的文件和文件夹。比如ASP.NET MVC项目默认有
Controllers、Views、Models文件夹,还有Global.asax;控制台应用只有Program.cs;WPF项目带App.xaml和MainWindow.xaml;类库默认是Class1.cs。如果项目保留了初始文件,从结构就能大概判断模板类型。 - 查看
.vs文件夹的缓存(如果存在):.vs是VS的隐藏配置文件夹,里面config子目录可能有项目模板的缓存信息,但这个文件夹经常被删除或忽略,只能作为补充线索。 - 通过项目属性辅助判断:右键项目→属性,看“应用程序”标签下的“输出类型”和“应用程序类型”。比如输出类型是“控制台应用程序”,大概率是控制台模板;如果是“Windows应用程序”,可能是WinForms或WPF模板。
二、怎么理解项目所基于的模板
- 先明确模板的核心定位:每个VS模板都是为特定开发场景预设的项目骨架。比如控制台模板是给命令行程序准备的,自带
Program.cs和Main入口;类库模板用来生成可被其他项目引用的DLL,没有入口点;ASP.NET MVC模板则是为Web应用搭建好了MVC架构的基础结构和路由配置。 - 分析模板生成的默认代码与配置:比如控制台模板的
Program.cs里的static void Main(string[] args)是程序的启动入口;WPF的App.xaml负责应用的启动配置,MainWindow.xaml是默认主窗口。理解这些默认内容的作用,就能明白模板是帮你省去从零搭建基础结构的麻烦,让你快速聚焦业务开发。 - 对比标准模板结构与现有项目:如果项目创建后做过修改,你可以在VS2017里新建一个对应类型的空白项目,把它的结构和现有项目对比,找出哪些是模板自带的内容,哪些是后续开发添加的。这样就能清晰知道模板给项目打下了什么基础,后续又做了哪些扩展。
内容的提问来源于stack exchange,提问作者AlGraf




