我很抱歉,如果這個問題已經被問過,但我真的不能這樣的事。尋找到msbuld財產來自
我要貢獻一個非常大的項目,有很多包括的和有條件分配。我想知道它在哪裏設置。
更具體地說,屬性名,我想在日誌中看到它被分配到的所有地方:項目文件,包括從系統文件,內置的默認值,任何其他來源。
我試圖使冗長=診斷,但它仍然沒有記錄該信息。
我很抱歉,如果這個問題已經被問過,但我真的不能這樣的事。尋找到msbuld財產來自
我要貢獻一個非常大的項目,有很多包括的和有條件分配。我想知道它在哪裏設置。
更具體地說,屬性名,我想在日誌中看到它被分配到的所有地方:項目文件,包括從系統文件,內置的默認值,任何其他來源。
我試圖使冗長=診斷,但它仍然沒有記錄該信息。
我喜歡使用/preprocess:flattened.proj
弄平該項目,然後該加載到文本編輯器,並搜索所有用途等
程序MSBuildExplorer3會給表示特性的圖表,並用於將它們設置等表達我沒有用太多,但看起來很有趣。
同樣重要的是要了解評價的順序。全局屬性按照它們在該展平文件中的順序進行設置,但目標內的那些屬性不會執行,直到該目標運行。然後是目標進行一次或分批(如果目標內的任務線是分批,但目標本身不是,它可能會造成混淆,該屬性只能設置一次,但它看起來像它被稱爲多次)
感謝您參考MSBuildExplorer3。它的用戶界面非常難以使用,但由於它是開源的,我將日誌記錄添加到文件中,我可以真正看到它找到了分配位置。 – max630 2014-10-02 09:17:43
聽起來很不錯。我發現顯示文字很小,出現鋸齒問題,如閱讀污跡報紙。 – 2014-10-03 13:39:40
/v:diag
將轉儲所有屬性值在控制檯日誌的開頭(而不是文件日誌),但不會告訴你他們來自何處,即項目,進口,環境,命令行參數,運行等msbuild Foo.csproj /pp:Foo.pp.csproj
來代替,這將解決所有導入,你可以閱讀.pp.csproj
文件來找到你的財產,上面的評論會告訴你什麼導入項目定義它和它的位置。
謝謝,我能解決我的問題。雖然由於某種原因調試不起作用,但我有一個非常類似的正確項目,並通過比較找到了應該定義的地方。 – max630 2014-10-01 21:24:17
如果沒有其他答案出現,唯一的解決方案可能是逐步調試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
對於msbuild 12.0(Microsoft(R)Build Engine版本12.0.30501.0)和vs2013 update 2我沒有看到源代碼調試器中的項目本身,所以這對於做一些使用的。 – max630 2014-10-02 09:24:25