这可能吗?
的 我们可以做到,但个人不推荐它。 强>
的 怎么样 强>
根据 NuGet文件 :
简单地说, 的 NuGet包是一个带有.nupkg的ZIP文件 延期 强> 包含编译代码(DLL),其他相关文件 该代码,以及包含诸如此类信息的描述性清单 包的版本号。具有共享代码的开发人员创建 打包并将其发布到公共或私人主机。包 消费者从合适的主机获取这些包,将它们添加到他们的 项目,然后在他们的项目中调用包的功能 码。 NuGet本身然后处理所有中间细节。
的 然而 强> ,Visual Studio模板是一个带有的文件 .zip 扩展,NuGet无法识别。即使我们将NuGet指向SVN位置,NuGet仍然无法识别它。
.zip
要解决此问题,我们必须创建一个NuGet包以包含此Visual Studio模板 .zip 文件,如:
<files> <file src="TestDemo.zip" target="Tools\TestDemo.zip" /> </files>
此外,还有一个问题,当我们将这个nuget包安装到项目中时,这个Visual Studio模板 .zip 文件将被下载到 \packages 解决方案文件夹中的文件夹我们必须将它移动到Visual Studio Templates文件夹。
\packages
所以,我们必须补充一下 .targets 使用该nuget包中的复制任务将zip文件复制到Visual Studio Templates文件夹。
.targets
的内容 .targets 文件:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="CopyTemplate" BeforeTargets="Build"> <Message Text="Copy Template to template folder."></Message> <Copy SourceFiles="$(SolutionDir)packages\MyTemplatePackage.1.0.0\Tools\TestDemo.zip" DestinationFolder="$(USERPROFILE)\Documents\Visual Studio 2017\Templates\ProjectTemplates" /> </Target> </Project>
的 最后 强> , .nuspec 文件如下:
.nuspec
<?xml version="1.0"?> <package > <metadata> <id>MyTemplatePackage</id> <version>1.0.0</version> <authors>Tester</authors> <owners>Tester</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Package description</description> <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> <copyright>Copyright 2018</copyright> <tags>Tag1 Tag2</tags> </metadata> <files> <file src="TestDemo.zip" target="Tools\TestDemo.zip" /> <file src="MyTemplatePackage.targets" target="Build\MyTemplatePackage.targets" /> </files> </package>
然后打包这个.nuspec文件,将这个nuget包添加到SVN位置,将SVN位置添加到nuget包源,你可以将这个nuget包安装到项目中,并构建项目,Visual Studio将下载该nuget包并复制 .zip 文件到Visual Studio Templates文件夹。
我已经创建了一个示例测试nuget包,它在我的Visual Studio 2017上工作正常,你可以在VS2017上测试它: https://1drv.ms/u/s!Ai1sp_yvodHf2Vax7TzuC6HQUD5w
的 为什么不推荐 强>
正如您在上面所看到的,这样做并不容易和简单,我们必须做很多事情来创建nuget包。更重要的是,为了获得模板,我们必须创建一个项目并安装该包并构建项目。它吸收了太多的额外操作。此外,当您更改模板中的任何内容时,您必须重新创建此包并进行安装。
由于此模板托管在SVN服务器上,因此您可以将其检查到Visual Studio模板文件夹,这样会更有效。
希望这个复杂的答案有所帮