2010-04-19 177 views
2

形勢的MSBuild覆蓋項目引用解析爲預編譯大會

我使用項目引用約400的csproj文件。其中大約3個單獨的團隊想要分離併合併到獨立的應用程序中。

我分支了3個感興趣的項目,並且由於獨立團隊使用diff SVN回購,我使用svn externals將這些項目拖入獨立應用程序的文件夾中。顯然,由於該團隊使用不同的文件夾結構,項目引用不再解決。

嘗試性解決方案

我想通設置的MSBuild特性ReferencePathAdditionalLibPaths指向一個目錄,所有的預編譯的依賴將使項目引用回退點和正確解決。然而,看起來並非如此。

問題

  • 有誰知道一個辦法有一個 失敗projectreference 決心仰望預編譯的dll?
  • 也許指向我的自動工具 將projectreferences轉換爲dll 引用?
  • 或者有沒有更好的方法來解決這個問題?

感謝

回答

2

項目引用由目標解析 - ResolveProjectReferences。它基本上在引用的項目上調用GetTargetPath,並將其作爲解決了項目組裝路徑。 IIUC,您的項目文件路徑在新設置中不正確,因此GetTargetPath將失敗。

你可以用許多方法解決這個問題,比如有一個將舊項目文件路徑映射到已解析的程序集路徑的目標[1],並將其添加到FooItem [2]中。或者,您可以將「all precompiled deps」中的所有文件添加到@(ReferencePath)中。參考路徑在之後填充,因此它具有所有最終路徑。向它添加搜索路徑將無濟於事。

  1. 而這個目標添加到ResolveReferencesDependsOn財產

  2. 的GetTargetPath電話應加入返回的路徑一些項目名稱,通過該項目的名稱替換FooItem。