我似乎无法从微软那里找到任何有用的文档,说明在Visual的属性表文件中定义用户宏时,如何在Delimiter元素中使用UserMacro和InheritsFromParent属性。
下面是示例用法:
<UserMacro Name="INCLUDEPATH" Value="$(VCROOT)\Inc"
InheritsFromParent="TRUE" Delimiter=";"/>从上面的例子中,我猜想“继承”实际上意味着"a)如果定义是非空的,那么追加分隔符,以及( b)附加新的定义“,因为非继承行为只是简单地替换任何当前的宏定义。有人确切地知道吗?更好的是,是否有任何关于Visual .vsprops文件和宏的替代文档的建议源?
注意:这与VisualStudioPropertySheet元素的VisualStudioPropertySheet属性不一样,例如:
<VisualStudioPropertySheet ... InheritedPropertySheets=".\my.vsprops">在这种情况下,“继承”的基本意思是“包括”。
发布于 2008-09-28 05:26:05
回答我自己的问题
InheritsFromParent的意思是优势。为了验证这一点,我做了一个实验,揭示了用户宏在Visual 2008中是如何工作的。下面是设置:
p.vcproj包括使用InheritedPropertySheets标记的属性表文件d.vsprops ('d‘表示派生)。d.vsprops包括属性表文件b.vsprops ('b‘表示基)。p.vcproj还定义了一个预构建事件,它转储环境。.vsprops文件都包含用户宏定义。b.vsprops
...
<UserMacro Name="NOENV" Value="B"/>
<UserMacro Name="OVERRIDE" Value="B" PerformEnvironmentSet="true"/>
<UserMacro Name="PREPEND" Value="B" PerformEnvironmentSet="true"/>
...d.vsprops
...
<VisualStudioPropertySheet ... InheritedPropertySheets=".\b.vsprops">
<UserMacro Name="ENV" Value="$(NOENV)" PerformEnvironmentSet="true"/>
<UserMacro Name="OVERRIDE" Value="D" PerformEnvironmentSet="true"/>
<UserMacro Name="PREPEND" Value="D" InheritsFromParent="true"
Delimiter="+" PerformEnvironmentSet="true"/>
...p.vcproj
...
<Configuration ... InheritedPropertySheets=".\d.vsprops">
<Tool Name="VCPreBuildEventTool" CommandLine="set | sort"/>
...构建输出
...
ENV=B
OVERRIDE=D
PREPEND=D+B
...根据这些结果,我们可以得出以下结论:
PerformEnvironmentSet="true"。证明:NOENV未显示在生成输出中。PerformEnvironmentSet还是InheritsFromParent。证明:在b.vsprops中,NOENV不在环境中设置,而在d.vsprops中使用时不需要InheritsFromParent。OVERRIDE被设置为D,尽管它先前被定义为B。InheritsFromParent="true" 重新定义用户宏会将新定义添加到以前的任何定义中,由指定的Delimiter隔开。证明:PREPEND设置为D+B (不是D或B+D)。下面是我为解释Visual .vsprops文件和相关主题找到的一些额外资源,这些资源来自几年前,但仍然很有帮助:
理解VC项目系统第一部分:文件和工具
理解VC项目系统第二部分:配置和项目属性页面对话框
理解VC项目系统第三部分:宏、环境变量和共享
理解VC项目系统第四部分:属性和属性继承
理解VC项目系统第五部分:构建、工具和依赖关系
理解VC项目系统第六部分:自定义构建步骤和构建事件
理解VC项目系统第七部分:"makefile“项目和(重新)使用环境
发布于 2008-09-27 17:14:50
这个这里的UI版本有一些文档。许多XML文件似乎有些无文档化,通常只是提供一个模式文件。你对它们的功能的猜测是完全正确的。
发布于 2011-02-15 12:51:17
这不是故事的全部。
https://stackoverflow.com/questions/142708
复制相似问题