根据我的研究和测试,我不得不说目前还无法实现(创建一个解决方案模板,其中包括对现有项目的“链接”,而不是创建现有项目的副本)。我会非常乐意被证明是错误的,但我已经仔细查阅了Visual Studio模板的大量MSDN文档,以及一些第三方“教程”/博客,试图找到一种方法来实现它。
** 更新 **
我在Visual Studio反馈论坛中发布了一个新建议,如果您有兴趣改进Visual Studio中模板的创建,请支持我。
这里是我所使用的一些参考资料:
我找到的最接近能够实现的方法是另一篇有关如何向模板中添加预编译程序集的MSDN文章 - "
Assembly Element (Visual Studio Templates)"。您可以使用此方法指向其他项目的
\Release
(或
\Debug
)文件夹,但在重新编译其他程序集后,这可能会导致某些意外行为。
还有一些讨论可能会制作一个NuGet包来引用模板中的项目,但这仍然不完全符合我的要求。我没有对此解决方案进行过多的研究,但如果您对此方法感兴趣,这里是Microsoft Docs文章的链接 - "
NuGet Packages in Visual Studio templates"
在这个时候,我最好的建议是在
Visual Studio反馈论坛上提出或投票。我只能找到一个关于此主题的建议(
支持指定现有项目的解决方案模板),但它已经被管理员关闭,因为在其前两个月(2016年11月至2017年1月)内没有获得足够的投票数。
如果您发布新建议,我建议您向任何可能感兴趣的人推广和分享,以便开始获得投票并避免被关闭。
仅供参考和分享精神,这是我一直在使用的“测试”模板。也许其他人可以找到一种使它工作的方法:
样本VSTEMPLATE
(不会产生所需结果)
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http:
<TemplateData>
<Name>New Application Template</Name>
<Description>Template for creating a new application</Description>
<ProjectType>VisualBasic</ProjectType>
<ProjectSubType></ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>NewApplication</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>SampleIcon.png</Icon>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<Project File="C:\Development\Libraries\MyLibrary.vbproj">
</Project>
<ProjectTemplateLink ProjectName="$projectname$.UI">
UI\MyUI.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
在我的研究中,似乎有几个关键点可以制作一个“解决方案”模板(而不是一个“项目”模板):
我尝试了多种不同的
.vstemplate
文件的变化和迭代,但是当我在 Visual Studio 中尝试创建一个新项目时,我只得到一个单一项目 "solution" (
$projectname$.UI)。我尝试将现有项目的路径/文件名移动到标签数据中(而不是
File
属性),放入
<Project>
元素的
<ProjectItem>
子元素中,以及其他各种小的 "调整",希望能让它正常工作。