如何在Visual Studio 2015的多项目sln模板中添加现有项目

5
我正在尝试创建一个包含多个项目的sln模板。我可以在模板中创建多个新项目,但我无法弄清楚如何向模板内的现有解决方案中添加对其他解决方案中现有项目的引用。任何帮助都将不胜感激。
编辑:另一个相关方为了澄清,此问题涉及Visual Studio解决方案模板及其模式化包含现有标准项目的能力(或缺乏能力)。
在我的情况下(我不确定OP正在做什么),我正在创建大约80个小控制台应用程序,每个应用程序都引用一些标准项目以进行数据检索等操作。我想要一种方法,在选择"新建项目>我的自定义模板"后,它会创建一个解决方案,其中包括一个控制台项目、一个测试项目,并且包括5个现有项目以及对其他内容的一些引用。
保存现有项目的项目模板不是一个选项。这只会重新创建特定项目。如果原始项目发生更改(它肯定会),更改将不会传递到副本。

有人找到了一种方法来实现这个功能吗(创建一个包含现有项目而不是该项目的副本的解决方案模板)?最好同时在“主”新项目中创建对现有项目的引用作为参考? - G_Hosa_Phat
2个回答

3
根据我的研究和测试,我不得不说目前还无法实现(创建一个解决方案模板,其中包括对现有项目的“链接”,而不是创建现有项目的副本)。我会非常乐意被证明是错误的,但我已经仔细查阅了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://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 文件的变化和迭代,但是当我在 Visual Studio 中尝试创建一个新项目时,我只得到一个单一项目 "solution" ($projectname$.UI)。我尝试将现有项目的路径/文件名移动到标签数据中(而不是 File 属性),放入 <Project> 元素的 <ProjectItem> 子元素中,以及其他各种小的 "调整",希望能让它正常工作。

2
除了我在Visual Studio反馈论坛上的建议之外,我正在考虑开发一个Visual Studio模板管理器应用程序(如果有兴趣的话),它将自动化手动创建“多项目”解决方案模板的过程,如MSDN文章和jayway.com博客文章中所述,但以一种允许包含现有项目的方式。 - G_Hosa_Phat

0
首先,将所有必要的项目添加到您的解决方案中(右键单击解决方案->添加新/现有项目)。
之后,您需要转到文件->导出模板。然后只需按照弹出窗口进行操作,您就可以开始了。

3
出口模板向导仅允许导出项目和项模板。对于要添加到解决方案中的新项目,这很好。但是如果我想将现有项目添加到从模板生成的解决方案中,这只会在生成解决方案时重新创建“现有”项目。这是不令人满意的。所需功能是将项目文件(以及它引用的所有内容)带入生成的解决方案中,而不是每次重新创建项目。 - CodeWarrior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接