Visual c++ 如何在VC项目模板中包含属性表

Visual c++ 如何在VC项目模板中包含属性表,visual-c++,visual-studio-2013,project-template,Visual C++,Visual Studio 2013,Project Template,我在Visual Studio 2013解决方案中有很多VC项目。对于每个项目,我将其大部分属性保存在属于项目文件夹的属性页AllConfigurations.props。 我正在尝试为这样的项目创建一个项目模板。我将AllConfigurations.props添加到模板zip文件,并在.vstemplate: <Project TargetFileName="Test.vcxproj" File="Test.vcxproj" ReplaceParameters="true">

我在Visual Studio 2013解决方案中有很多VC项目。对于每个项目,我将其大部分属性保存在属于项目文件夹的属性页
AllConfigurations.props
。 我正在尝试为这样的项目创建一个项目模板。我将
AllConfigurations.props
添加到模板zip文件,并在.vstemplate:

  <Project TargetFileName="Test.vcxproj" File="Test.vcxproj" ReplaceParameters="true">
  <ProjectItem ReplaceParameters="false" TargetFileName="AllConfigurations.props">AllConfigurations.props</ProjectItem>

所有配置。道具
但是,使用此模板创建新项目时,Visual Studio会显示一个错误:

无法读取项目文件“Test1.vcxproj”。 Test1\Test1.vcxproj(76,5):未找到导入的项目“Test1\AllConfigurations.props”。确认声明中的路径正确,并且文件存在于磁盘上

未将项目添加到解决方案中。似乎VS在从模板解包所有文件之前尝试加载新项目


我怎么处理呢?

我也有同样的问题。我无法将属性页实际添加到项目中,因为它看起来像Visual Studio(在我的例子中是2013)将属性页视为项目。我希望我可以使用和的一些组合来创建项目,该项目首先由属性表组成,然后是我的实际项目。然而,我最终还是一起破解了一个解决方案,因为它的工作量要小得多

  • 打开.vcxproj文件,找到看起来像

  • 打开包含要添加的属性的自定义属性表文件。复制
    项目
    元素下的所有元素(但不包括)

  • 将所有内容粘贴到步骤(1)中找到的位置之前

  • 注释掉或删除引用自定义属性页的
    ImportGroup
    元素的所有子元素(现在看起来应该像


  • 重新压缩并安装模板。现在,您应该能够使用感兴趣的属性创建一个项目。缺点是,VCXPROJ是一种丑陋的东西,并且你将没有一个单独的属性表,但是你至少应该能够在一个新的项目类型中分配和引用你的属性。

    < P>这里你可以创建一个VisualStudioC++项目模板,其中包括你的用户属性表。p>
  • 创建要导出到模板的项目,并在属性管理器窗口中添加属性页。在您的例子中,AllConfigurations.props文件
  • 在解决方案资源管理器窗口中,将属性表文件添加到项目中。必须执行此操作才能将文件放入模板存档并自动复制到新项目中
  • 使用文件->导出模板导出项目模板。在向导的第二页上,取消选中“自动将模板导入Visual Studio”选项
  • 从模板zip文件中提取.vcxproj文件,并在文本编辑器中打开。搜索包含属性页文件的行。在您的项目中,每个构建配置将有一个。在您的情况下,它们应该如下所示:
    。 将行更改为:
    。这将允许项目打开,即使文件尚不可用
  • 保存文件并将其添加回模板zip文件
  • 将zip文件复制到\visualstudio版本\Templates\ProjectTemplates目录

  • 关闭并重新打开Visual Studio,您应该能够使用新模板创建新项目。您可能需要关闭解决方案并重新打开它,才能在属性管理器窗口中的所有配置下看到属性表。如果您不想在解决方案资源管理器窗口中看到.props文件,可以从新项目中删除该文件。它仍将在属性管理器中使用

    格雷格,谢谢你的主意。不幸的是,在我的情况下,我不能应用它,因为项目健壮性是我的首要任务。保罗,谢谢你的回答。我有完全相同的想法,但最终还是拒绝了。这个附加条件是一种黑客行为,在生产中不需要它,而且,它可能会隐藏一个bug,因为某些原因,它需要.props文件,但却找不到。@Nikerboker我还没有找到解决这个条件的方法。自定义向导也可以作为备选方案。