Visual Studio 自定义项目模板

经常需要新建一个项目,项目有很多重复的东西,如然后新建View文件夹,ViewModel文件夹,Model文件夹,还有把我们的ViewModelBase放入ViewModel,如果还用框架,还需要加上好多。 还需要在每个文件夹加上声明,于是每次做的重复的就有很多。

而我一般还有用九幽统计,需要修改好多东西,每新建一个项目都要做这个,这样我觉得不好,在网上看到了自定义模板,不过垃圾微软官方说的好差,看不懂,看了老周的,还是觉得不懂,我就自己来创建一个试试。

第一步需要打开我们目录:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows UAP

可以看到里面有很多个文件夹,一般我们打开最后一个,我也不知道你看到我这篇,垃圾微软把它改为最大多少,所以,一个一个来,我现在打开1033,(1033是老周博客写的)我的其实还有更后的,这个如果都是数字,就选最大的。


11月更新:

1033是数字版本LCID(Locale ID,区域性标识符),1033代表英语,2052代表简体中文

多谢UltimateLove大神


第二步是把文件夹复制到桌面或其他离回收站比较近的地方,然后压缩一份保存。因为怕自己弄坏了。

然后我们用 Visual Studio 打开文件,记住,要打开 .csproj 是要用 vs 的菜单 文件->打开。

我们先打开 BlankApplication 里的 BlankApplication.vstemplate

我们要修改是 项目包含文件,把需要包括的文件放进去, TemplateContent 就是我们项目包含的文件

可以看到需要包含项目 Application.csproj,这个值后面 写了ReplaceParameters="true",这就是我们会把东西代换,代换的我在后面讲。

然后就是项目包含文件,如 App.xaml <ProjectItem ReplaceParameters="true" TargetFileName="App.xaml">App.xaml</ProjectItem>

上面代码意识:从本地找到App.xaml文件,放在新建项目的App.xaml。因为放入之前需要代换,于是加上ReplaceParameters="true"

那么代换是把什么换为什么?先看看文档做了哪些改变

看到$safeprojectname$这就是我们代换的项目名,于是接下来讲下可以代换的有哪些

参数](http://www.w3.org/1999/xhtml">参数 ) </sentenceText>

描述](http://www.w3.org/1999/xhtml">描述</sentenceText></span> )

clrversion

公共语言运行时 (CLR) 的当前版本。

GUID [1-10]

用于替换项目文件中的项目 GUID 的 GUID。 最多可以指定 10 个唯一的 GUID(例如,guid1))。

itemname

用户在<strong](http://www.w3.org/1999/xhtml">用户在<strong ) xmlns="[http://www.w3.org/1999/xhtml">添加新项</strong>对话框中提供的名称。](http://www.w3.org/1999/xhtml">添加新项</strong>对话框中提供的名称。</sentenceText></span> )

machinename

当前的计算机名称(例如,Computer01)。](http://www.w3.org/1999/xhtml">当前的计算机名称(例如,Computer01)。</sentenceText></span> )

projectname

用户在<strong](http://www.w3.org/1999/xhtml">用户在<strong ) xmlns="[http://www.w3.org/1999/xhtml">新建项目</strong>对话框中提供的名称。](http://www.w3.org/1999/xhtml">新建项目</strong>对话框中提供的名称。</sentenceText></span> )

registeredorganization

HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 中的注册表项值。

rootnamespace

当前项目的根命名空间。 此参数仅适用于项目模板。

safeitemname

用户在<strong](http://www.w3.org/1999/xhtml">用户在<strong ) xmlns="[http://www.w3.org/1999/xhtml">“添加新项”</strong>对话框中提供的名称,名称中移除了所有不安全的字符和空格。](http://www.w3.org/1999/xhtml">“添加新项”</strong>对话框中提供的名称,名称中移除了所有不安全的字符和空格。</sentenceText></span> )

safeprojectname

用户在<strong](http://www.w3.org/1999/xhtml">用户在<strong ) xmlns="[http://www.w3.org/1999/xhtml">“新建项目”</strong>对话框中提供的名称,名称中移除了所有不安全的字符和空格。](http://www.w3.org/1999/xhtml">“新建项目”</strong>对话框中提供的名称,名称中移除了所有不安全的字符和空格。</sentenceText></span> )

time

以 DD/MM/YYYY 00:00:00 格式表示的当前时间。

SpecificSolutionName

解决方案的名称。 当“创建解决方案的目录”被选中,SpecificSolutionName 具有解决方案的名称。 当“创建解决方案的目录”没有被选中,SpecificSolutionName是空。

userdomain

当前的用户域。](http://www.w3.org/1999/xhtml">当前的用户域。</sentenceText></span> )

username

当前的用户名。](http://www.w3.org/1999/xhtml">当前的用户名。</sentenceText></span> )

webnamespace

当前网站的名称。 在 Web 窗体模板中使用此参数以确保类名称是唯一的。 如果网站位于 Web 服务器的根目录下,则此模板参数将解析为 Web 服务器的根目录。

year

以 YYYY 格式表示的当前年份。

我们在添加我们的文件,如果需要放在项目的文件夹,而不是根目录,那么需要写<ProjectItem ReplaceParameters="true" TargetFileName="Properties\AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>在TargetFileName写上路径。

写完我们打开 Application.csproj ,他和一般的 .csproj 一样, ItemGroup 是项目文件,我们需要写入我们的文件是编译还是内容,添加文件很多是编译 Compile 。假如添加 NotifyProperty ,可以这样写

<Compile Include="ViewModel\NotifyProperty.cs" />

如果我们需要文件夹,空白的文件夹,我们可以这样写

    <Folder Include="Model\" />

把需要添加的文件和文件夹写完,进行保存。

然后把文件夹复制到C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows UAP\2052\BlankApplication 这个位置需要和你复制出的位置一样。也就是数字 2052 对应的你复制出来的路径。

复制进去需要管理员。

然后关闭vs,再打开vs,注意需要把vs关闭看下任务管理,杀vs进程。然后新进项目,这时可以看到新建的模板。

如果想新建模板,不是替换 BlankApplication ,可以修改TemplateID为我们的,不使用原来的。不把原来的 BlankApplication 文件夹覆盖。打开vs 新建就可以看到自己新建的。

新建项目如果没有找到刚才做的项目,那么可以打开C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplatesCache对应刚才相同位置。把文件复制,然后关闭vs,重新打开就可以看到。

除了手动复制还可以使用命令行输入 devenv /setup

如果提示'devenv' 不是内部或外部命令,也不是可运行的程序,在命令行输入

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE

devenv /setup

如果出现未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包

先重启下,如果还是不好,那么使用

devenv /resetuserdata

修改图片

我们可以修改显示的图标,显示在新建的图标,需要我们复制一个图标进去,然后PreviewImage作为我们复制的图标。

修改Template名称

我们可以看到如果我们新建一个模板,看到的名称和原来一样,那么如何自定义自己模板名称?其实我们可以修改TemplateData

我们把Name改为自己的名字,把Description改为自己的对模板的修改或者别的,如“这是一个模板”。

<Description  >这是一个模板</Description>

还有其他的,如果遇到不知道的,欢迎联系 lindexi_gd@163.com


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏charles的技术博客

CentOS 7使用elrepo源升级内核到最新版本

[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

4780
来自专栏维C果糖

详述 Sublime Text 打开 GBK 格式乱码的解决方法

  Sublime Text 是一个代码编辑器,其具有漂亮的用户界面和强大的功能,例如代码缩略图,Python 的插件,代码段等。还可自定义键绑定,菜单和工具栏...

5519
来自专栏技术博客

Asp.Net MVC3.0项目部署到Win7 64过程总结

   之前一直是通过Visual Studio直接F5来运行自己编写的项目或者小程序,很少通过部署发布到IIS上面,于是自己便在自己的笔记本上进行测试,结果还真...

1342
来自专栏圣杰的专栏

给ASP.NET Core Web发布包做减法

紧接上篇:ASP.NET Core Web App应用第三方Bootstrap模板。这一节我们来讲讲如何优化ASP.NET Core Web发布包繁重的问题。

891
来自专栏DeveWork

Sublime text 3 中Package Control 的安装与使用方法

Package Control插件本身是一个为了方便管理插件的插件,在Sublime text 3中,Package Control 的安装方法一开始出来的方法...

6958
来自专栏张善友的专栏

.NET Core 系列5 :使用 Nuget打包类库

NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全...

2535
来自专栏乐沙弥的世界

Vmware server 下为Oracle RAC 添加共享磁盘

    在VMware下的Oracle RAC 环境中,对于共享存储不够或者需要增加新的共享磁盘来配置ocr或votingdisk的多路镜像,我们可以通过vmw...

1561
来自专栏WebDeveloper

Thinkphp的cron计划任务

cron1默认在ThinkPHP\Library\Cron\cron1.php如果没有cron目录则新建一个,cron1.php自己所要执行的脚本

1543
来自专栏林德熙的博客

win10 uwp 访问解决方案文件 WPF 访问解决方案文件C# 访问解决方案文件

那么我们访问我们解决方案加的 ms-appx 就是解决方案的绝对路径,如果我们相对于我们xaml的路径也是可以

1361
来自专栏大内老A

.NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择。一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux...

3947

扫码关注云+社区

领取腾讯云代金券