2014-10-01 36 views
0

我很抱歉,如果这个问题已经被问过,但我真的不能这样的事。寻找到msbuld财产来自

我要贡献一个非常大的项目,有很多包括的和有条件分配。我想知道它在哪里设置。

更具体地说,属性名,我想在日志中看到它被分配到的所有地方:项目文件,包括从系统文件,内置的默认值,任何其他来源。

我试图使冗长=诊断,但它仍然没有记录该信息。

+0

如果没有其他答案出现,唯一的解决方案可能是逐步调试msbuild进程:http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script -with-visual-studio.aspx – stijn 2014-10-01 09:38:38

+0

对于msbuild 12.0(Microsoft(R)Build Engine版本12.0.30501.0)和vs2013 update 2我没有看到源代码调试器中的项目本身,所以这对于做一些使用的。 – max630 2014-10-02 09:24:25

回答

0

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

程序MSBuildExplorer3会给表示特性的图表,并用于将它们设置等表达我没有用太多,但看起来很有趣。

同样重要的是要了解评价的顺序。全局属性按照它们在该展平文件中的顺序进行设置,但目标内的那些属性不会执行,直到该目标运行。然后是目标进行一次或分批(如果目标内的任务线是分批,但目标本身不是,它可能会造成混淆,该属性只能设置一次,但它看起来像它被称为多次)

+0

感谢您参考MSBuildExplorer3。它的用户界面非常难以使用,但由于它是开源的,我将日志记录添加到文件中,我可以真正看到它找到了分配位置。 – max630 2014-10-02 09:17:43

+0

听起来很不错。我发现显示文字很小,出现锯齿问题,如阅读污迹报纸。 – 2014-10-03 13:39:40

0

/v:diag将转储所有属性值在控制台日志的开头(而不是文件日志),但不会告诉你他们来自何处,即项目,进口,环境,命令行参数,运行等msbuild Foo.csproj /pp:Foo.pp.csproj来代替,这将解决所有导入,你可以阅读.pp.csproj文件来找到你的财产,上面的评论会告诉你什么导入项目定义它和它的位置。

+0

谢谢,我能解决我的问题。虽然由于某种原因调试不起作用,但我有一个非常类似的正确项目,并通过比较找到了应该定义的地方。 – max630 2014-10-01 21:24:17