通常我製作的解決方案包含多個應用程序,它可能是一個Web應用程序,服務和一個簡單的控制檯應用程序。如何使用FAKE將項目構建到多個輸出?
要建立我的項目,我用:
let projects = !! "src/**/*.csproj" -- "src/**/*.Tests.csproj"
然後
projects
|> MSBuildRelease buildDir "ResolveReferences;Build"
的問題,這是我所有的服務的DLL和控制檯dll文件在同一目錄下,buildDir
結束了,是有辦法強制每個項目在buildDir
內有一個子文件夾?對於Web項目,它看起來沒問題,因爲我有_PublishedWebsites
文件夾依賴。
另外,當用這種方式構建它時,是不是打開了一些要多次構建的項目?我的意思是,如果Service
和Web
都有LibA
的引用,那麼這三次不會結束建立LibA
?有一次,它與文件格式本身相匹配,並且由於來自Web
和Service
的引用而兩次匹配。
UPDATE:
這是一個示範項目,你可以在這裏找到代碼:https://github.com/mastoj/FAKESimpleDemo
好吧不,它不應該多次構建依賴關係(即使VS不會) - 對你的問題:最簡單的方法是,如果你將你的'項目'分成不同的部分(我猜你已經有一些子-src /'下的文件夾結構),然後執行多個'projects |> MSBuildRelease ...' - 也不要分割依賴關係嗎?通常,在構建腳本中有多個「目標」 – Carsten
你見過[入門](https://fsharp.github.io/FAKE/gettingstarted.html)嗎?在那裏它將輸出分成'./ build'和'。/ test' - 與你想要做的非常相似 – Carsten
@Carsten,謝謝你的評論。如果你構建sln,VS構建依賴項,但是在這裏我匹配每個csproj並構建它......這不會使每個csproj都單獨構建嗎?我確實分成了'build'和'test'。我想分裂成多個部分是最簡單的事情,但如果你可以指定基於項目的輸出,這將是很好的。 –