我正试图在其中制作多个项目的sln模板。我能做的是在模板中创建多个新项目,但我不知道如何在模板内的其他解决方案中添加对现有项目的引用。任何帮助都是感激的。
<标题>编辑作为另一个感兴趣的方,为了澄清,这个问题是关于Visual Studio Solution Templates和它们的能力(或缺乏能力)来模式解决方案,包含现有的标准项目。
在我的例子中(我不确定OP在做什么),我创建了大约80个左右的小型控制台应用程序,每个应用程序都引用了几个标准项目来进行数据检索等等。我想有一个方法,我可以选择新建>项目>$MY CUSTOM TEMPLATE$,它创建一个解决方案与控制台项目,测试项目,并包括5个现有的项目,以及一些参考到其他的东西。
不支持为现有项目保存项目模板。所有这些都将重新创建有问题的项目。如果原始项目被更改了(它将会),这些更改将不会延续到副本中。
标题>根据我的研究和测试,我不得不说这个目前是不可能的 (创建一个包含到现有项目的"链接"的解决方案模板,而不是创建现有项目的副本)。
我将LOVE证明这是错误的,但我已经通过了相当多的MSDN文档的Visual Studio模板,以及一些第三方的"教程"/博客试图找到一种方法来实现它。
** UPDATE **
我已经在Visual Studio反馈论坛中发布了一个新的建议,可以使用任何对改进Visual Studio模板创建感兴趣的人的支持。
下面是我使用的几个参考:
- MSDN文章-"如何:创建多项目模板"
- jayway.com的一篇博客文章(2015年3月13日)-"Visual Studio:如何创建多个项目的解决方案模板"(这是我的主要来源,因为它包括非常详细的说明以及屏幕截图,以帮助解释MSDN文章中概述的相同步骤,以及一些额外的"提示")
我能找到的最接近几乎使其工作的东西是另一篇关于如何将预编译的程序集添加到模板中的MSDN文章-"汇编元素(Visual Studio模板)"。您可能可以使用它指向其他项目的Release
(或Debug
)文件夹,但是在某些情况下,可能会在重新编译其他程序集后导致一些意想不到的行为。
也有一些关于可能为您的项目制作NuGet包的讨论,然后在模板中引用,但这仍然不是确切的我正在寻找的。我没有对这个解决方案做太多的研究,但是如果你对这个方法感兴趣,这里有一个微软文档文章的链接——"Visual Studio模板中的NuGet包"
在这一点上,我最好的建议是在Visual Studio反馈论坛上提出建议或投票。我只能找到一个关于这个主题的建议张贴在那里(指定现有项目的支持解决方案模板),但它已经被管理员关闭,因为在前两个月(2016年11月- 2017年1月)没有获得足够的投票。如果你发布了一个新的建议,我建议你推广并与任何你认为可能感兴趣的人分享,这样你就可以开始收集选票,防止它被关闭。
仅供参考,本着分享的精神,这里是我一直在使用的"测试"模板。也许其他人可以找到一个方法让它工作:
样本VSTEMPLATE(DOES NOT PRODUCE THE DESIRED RESULT)
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<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:DevelopmentLibrariesMyLibrary.vbproj">
</Project>
<ProjectTemplateLink ProjectName="$projectname$.UI">
UIMyUI.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
在我的研究中,似乎有几个关键制作解决方案模板(而不是项目模板):
- 在
<VSTemplate>
元素中,将Type
属性设置为ProjectGroup
而不是Project
或Item
(即使MSDN文档只列出后两个可能的值)。 - 在
<TemplateContent>
元素下,将<ProjectCollection>
元素标签包裹在<ProjectTemplateLink>
(可能还有<Project>
)元素周围。
我已经尝试了这个.vstemplate
文件的一些变化和迭代,但是,当我尝试在Visual Studio中创建一个新项目时,我得到的只是一个项目"解决方案"($projectname$. ui )。我已经尝试将现有项目的路径/文件名移动到标签数据(而不是File
属性),到<Project>
元素的<ProjectItem>
子元素,以及我试图让它工作的各种其他小"调整"。
首先,将所有必要的项目添加到您的解决方案中(在解决方案上添加RC ->添加新/现有项目)。
之后,您需要进入File -> export template。然后继续使用弹出窗口,这样就可以了。