找到msbuild属性的来源

时间:2014-10-01 08:36:52

标签: msbuild

对不起,如果已经提出这个问题,我真的不能这样了。

我必须为一个非常大的项目做出贡献,包括许多包含和条件分配。我想知道它的设置位置。

更具体地说,对于属性NAME,我想在日志中查看分配它的所有位置:项目文件,系统包含的文件,内置默认值,以及任何其他来源。

我已尝试启用verbosity = diagnostic,但仍未记录此信息。

2 个答案:

答案 0 :(得分:0)

/v:diag将转储控制台日志开头的所有属性值(不是文件日志),但不会告诉您它们来自何处,即项目,导入,环境,命令行参数等。 msbuild Foo.csproj /pp:Foo.pp.csproj相反,它会解析所有导入,您可以阅读.pp.csproj文件来查找您的媒体资源,上面的评论会告诉您导入的项目定义了哪些内容及其位置。

答案 1 :(得分:0)

我喜欢使用/preprocess:flattened.proj展平项目,然后将其加载到文本编辑器中并搜索所有用途等。

程序MSBuildExplorer3会给出一个图表,显示属性和用于设置它们的表达式等等。我没有太多使用它,但看起来很有趣。

理解评估顺序也很重要。全局属性按照在展平文件中找到的顺序进行设置,但在目标运行之前,不会执行目标内部的属性。然后Target执行一次或批处理(如果目标中的任务行是批处理的,但目标本身不是,那么可能会混淆属性只设置一次,但看起来它被多次调用)