[英]How do I access current Project context within a custom Task?
如何在MSBuild的自定義任務中訪問當前項目上下文? 最初,似乎好像ProjectCollection上的GlobalProjectCollection引用將允許訪問,但是至少在從命令行運行MSBuild時,它似乎為空。
我目前可以通過以下方式從當前項目文件中獲取新的Project實例:
List projectAssemblies = new List();
using (XmlReader projectFileReader =
XmlReader.Create(this.BuildEngine.ProjectFileOfTaskNode))
{
Project project = new Project(projectFileReader);
foreach (ProjectItem item in project.AllEvaluatedItems)
{
... woo hoo ...
}
}
但這看起來很麻煩。 我如何才能訪問從中調用任務的項目?
你不能。 MSBuild是專門設計的,因此單個任務只能訪問您顯式傳遞給任務的參數,而不能訪問其他參數。 現在,您知道每個任務僅受調用此任務時所指定內容的影響,這使MSBuild文件更易於閱讀。
您擁有的代碼不是在創建項目的副本,而是在創建新的實例,因此您不應期望屬性相同。 例如,當前執行項目的一個實例(從中調用您的任務的實例)的屬性可以從命令行中覆蓋,也可以在構建項目的過程中進行更改,而新創建的項目在第一次執行后將具有該屬性的默認值MSBuild引擎通過該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.