jwf*_*arn 7 visual-studio-2005 visual-studio-2008 visual-studio
我似乎无法找到任何有用的微软大约将如何使用的文档Delimiter
和InheritsFromParent
属性的UserMacro
定义用户宏当元素.vsprops
属性表文件为Visual Studio.
以下是示例用法:
<UserMacro Name="INCLUDEPATH" Value="$(VCROOT)\Inc"
InheritsFromParent="TRUE" Delimiter=";"/>
Run Code Online (Sandbox Code Playgroud)
从上面的例子中,我猜测"inherit"实际上意味着"a)如果定义是非空的,那么追加分隔符,b)附加新定义"其中非继承行为将简单地替换任何当前宏定义.有人有确切消息么?更好的是,有没有人有Visual Studio .vsprops
文件和宏的替代文档的任何建议来源?
注意:这是不一样的InheritedPropertySheets
所述的属性VisualStudioPropertySheet
元件,例如:
<VisualStudioPropertySheet ... InheritedPropertySheets=".\my.vsprops">
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"继承"基本上意味着"包括".
[回答我自己的问题]
InheritsFromParent
意思是前置.为了验证这一点,我做了一个实验,揭示了用户宏在Visual Studio 2008中的工作方式.以下是设置:
p.vcproj
包含属性表文件d.vsprops
(派生的 'd' )InheritedPropertySheets
.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"/>
...
Run Code Online (Sandbox Code Playgroud)
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"/>
...
Run Code Online (Sandbox Code Playgroud)
p.vcproj
...
<Configuration ... InheritedPropertySheets=".\d.vsprops">
<Tool Name="VCPreBuildEventTool" CommandLine="set | sort"/>
...
Run Code Online (Sandbox Code Playgroud)
构建输出
...
ENV=B
OVERRIDE=D
PREPEND=D+B
...
Run Code Online (Sandbox Code Playgroud)
从这些结果我们可以得出以下结论:
PerformEnvironmentSet="true"
必须在用于构建事件的环境中定义用户宏.证明:NOENV
未在构建输出中显示.PerformEnvironmentSet
或InheritsFromParent
.证明:in b.vsprops
,NOENV
未设置在环境中并且在d.vsprops
不需要的情况下使用InheritsFromParent
.OVERRIDE
设置为D
尽管早先定义为B
.InheritsFromParent="true"
预规划的新定义之前的任一定义中,由指定的分开Delimiter
.证明:PREPEND
设置为D+B
(不是D
或B+D
.)以下是我在解释Visual Studio .vsprops
文件和相关主题时发现的一些额外资源,它来自几年前,但它仍然有用:
了解VC项目系统第七部分:"makefile"项目和(重新)使用环境
归档时间: |
|
查看次数: |
3451 次 |
最近记录: |