我正在尝试制作一个包含多个项目的sln模板。 我能做的是在模板中创建多个新项目,但我无法弄清楚如何在模板内的其他解决方案中添加对现有项目的引用。任何帮助表示赞赏。
作为另一个感兴趣的一方,为了澄清,这个问题是询问Visual Studio解决方案模板以及他们对包含现有标准项目的解决方案的能力(或缺乏能力)。
在我的情况下(我不确定OP正在做什么)我正在创建大约80个左右的小型控制台应用程序,每个应用程序都引用了几个用于数据检索的标准项目等等。我希望有一种方法可以选择New> Project> $ MY CUSTOM TEMPLATE $,它会创建一个包含控制台项目,测试项目的解决方案,并包含5个现有项目以及对其他内容的一些引用。
不能选择保存现有项目的项目模板。所做的只是重新创建有问题的项目。如果原始项目被更改(并且它将会),则更改将不会转移到副本。
答案 0 :(得分:0)
首先,将所有必要的项目添加到您的解决方案中(RC on solution - > Add new / existing project)。
之后,您需要转到文件 - >导出模板。然后继续弹出窗口,你应该好好去。
答案 1 :(得分:0)
根据我的研究和测试,我将不得不说这目前不可能(创建一个包含现有项目“链接”的解决方案模板创建现有项目的副本)。
我 LOVE 被证明是错误的,但我已经浏览了相当多的Visual Studio模板的MSDN文档,以及一些第三版-party“教程”/博客试图找到实现它的方法。
I've posted a new suggestion ,可以使用任何有兴趣改进Visual Studio中模板创建的人的支持。
以下是我使用过的几个参考资料:
我能够几乎使其工作的最接近的事情是另一篇关于如何将预编译的程序集添加到模板的MSDN文章 - “Assembly Element (Visual Studio Templates)” 。您可以使用它来指向其他项目的\Release
(或\Debug
)文件夹,但在某些情况下, 会导致某些意外行为重新编译其他程序集后。
还有一些关于可能制作项目的NuGet包,然后在模板中引用 的讨论,但仍然不是完全我正在寻找的东西对于。我没有对此解决方案进行太多研究,但如果您对此方法感兴趣,请参阅Microsoft Docs文章的链接 - “NuGet Packages in Visual Studio templates”
此时,我最好的建议是对Visual Studio feedback forums的建议进行表决或投票。我只能在那里找到关于这个主题的一个建议(Support Solution templates that specify existing projects),但是管理员已经关闭了它在前两个月(2016年11月 - 2017年1月)没有获得足够的选票。 / p>
如果您发布新建议,我建议您宣传并与您认为可能感兴趣的任何人分享,这样您就可以开始接受投票并使其无法关闭。
仅供参考,本着共享的精神,这里是我一直在使用的“测试”模板。也许其他人可以找到一种方法使其发挥作用:
<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:\Development\Libraries\MyLibrary.vbproj">
</Project>
<ProjectTemplateLink ProjectName="$projectname$.UI">
UI\MyUI.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
在我的研究中,似乎有一些关键是制作解决方案模板(而不是项目模板):
<VSTemplate>
元素中,将Type
属性设置为 ProjectGroup
,而不是Project
或Item
(即使MSDN文档仅将后两者列为可能的值。)。<TemplateContent>
元素下,将<ProjectCollection>
元素标记包裹在<ProjectTemplateLink>
(可能还有<Project>
)元素周围。我已经尝试了这个.vstemplate
文件的一些变体和迭代,但是,当我尝试在Visual Studio中创建一个新项目时,我得到的只是一个项目“解决方案”( $ projectname $ .UI 强>)。我已经尝试将现有项目的路径/文件名向下移动到标记数据(而不是File
属性),移动到<ProjectItem>
元素的<Project>
子元素,并且我试图让它发挥作用的各种其他小“调整”。