我在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会显示错误:
无法读取项目文件&#34; Test1.vcxproj&#34;。 Test1 \ Test1.vcxproj(76,5):导入的项目&#34; Test1 \ AllConfigurations.props&#34;没找到。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。
项目未添加到解决方案中。在解压缩模板中的所有文件之前,VS似乎尝试加载新项目。
我该如何处理?
答案 0 :(得分:2)
以下是如何创建包含用户属性表的Visual Studio C ++项目模板的方法。
<Import Project="AllConfigurations.props" />
。
将行更改为:<Import Project="AllConfigurations.props" Condition="exists('AllConfigurations.props')" />
。即使文件尚不可用,这也将允许项目打开。关闭并重新打开Visual Studio,您应该能够使用新模板创建一个新项目。您可能必须关闭解决方案并重新打开它才能使属性表在 Property Manager 窗口中的所有配置下可见。如果您不希望在那里看到解决方案资源管理器窗口,则可以从新项目中删除 .props 文件。它仍将用于 Property Manager 。
答案 1 :(得分:1)
我遇到了同样的问题。我无法将属性表实际添加到项目中,因为它看起来像Visual Studio(在我的情况下为2013)将属性表视为项目。我希望我可以使用ProjectCollection和第二个vstemplate file的某种组合来创建首先由属性表组成的项目,然后是我的实际项目。但是,我最终一起破解了一个解决方案,因为它的工作要少得多。
打开.vcxproj文件,找到第一行看起来像<ImportGroup Label="PropertySheets" />
打开包含您要添加的属性的自定义属性表文件。复制Project
元素下的所有元素(但不包括在内)。
将所有内容粘贴到您在步骤(1)中找到的位置之前。
注释掉或删除引用自定义属性表的ImportGroup
元素的所有子元素(现在应该看起来像<!-- <Import Project="whatever.props" /> -->
)。
重新压缩并安装模板。现在您应该能够创建一个包含您感兴趣的属性的项目。缺点是生成的.vcxproj有点难看,您不会有单独的属性表,但您至少应该能够分发并在新项目类型中引用您的属性。