2014-10-30 89 views
0

我只有我的其他項目的名稱/位置,但我不想要求開發人員自己添加項目依賴關係。 所以我的prebuild事件需要通過某種msbuild魔術添加「引用」(=使當前項目依賴於另一個的任何東西)。 這可能嗎?如何使我的項目通過msbuild依賴於其他項目?

期望中的僞代碼:

<Task Name="MyOwnPrebuild"> 
    <AddProjectDependencies ItemGroup="@MyProjectPaths" /> 
</Task> 

在那裏我會通過iteratating在我的窗口充滿了@MyProjectPaths陣列遞歸文件夾中的一些其他任務調用此人之前。

+0

這是不可能的。標準雞與雞蛋,當MSBuild決定開始運行預生成事件時,它已經計算出依賴關係。試圖再次更改它們不起作用。不要隱藏依賴關係,客戶端程序員在遇到問題時不會有機會找出錯誤。 – 2014-10-30 12:30:09

+0

「到MSBuild決定開始運行預生成事件時,它已經計算出依賴」至少從查看Common.CurrentVersion.targets中的CoreBuild它不應該是真正的你說的ResolveReferences;在PreBuildEvent之後。 – Blub 2014-10-30 12:32:26

+0

.targets文件中的一個或多個訂單不相關。你可以很容易地自己推理出來,如果沒有必要的話,MSBuild確實不會構建任何東西。當然,在開始執行任何操作之前,它需要知道依賴關係是否發生了變化,包括運行預生成事件。 – 2014-10-30 12:37:34

回答

0

在我的特定情況下,有(幸運!)一個太簡單的,但美麗的答案:

<ItemGroup> 
    <ProjectReference Include="..\**\*.csproj"> 
    <Private>false</Private> 
    </ProjectReference> 
</ItemGroup> 

這包括所有子文件夾我的所有項目(?)!在這個特殊情況下我確實需要什麼。如果我想限制到特定類型的項目,我可以輕鬆使用更具體的正則表達式。

+0

對其他人的警告:不知何故,Visual Studio似乎試圖變得「聰明」併爲我擴展。似乎沒有發生在每一個版本,所以我不得不看這個。 – Blub 2014-11-05 10:12:20

相關問題