2010-08-26 170 views
0

我有一個內部有4個項目的解決方案。我想要做的是更改批量構建的順序(右鍵單擊解決方案批量構建...)。我已經配置了Build Order,但這似乎沒有什麼區別。批量生成VS2008解決方案

目前,它似乎只是按它們在解決方案資源管理器中出現的順序列出它們,但它們依賴於其他順序不同的其他順序。例如:

Solution 
    - Project1 
    - Project2 
    - Project3 
    - Project4 

但依賴意味着它需要建立在這個順序:

Solution 
    - Project4 
    - Project2 
    - Project3 
    - Project1 

這是可能的,如果是這樣,怎麼樣?

+0

你怎麼知道它不工作?代碼是否未編譯,或者當您嘗試執行應用程序時是否出現錯誤? – Dave 2010-09-07 04:00:59

回答

1

這些C++或C#項目?如果他們是C++項目,它們是否依賴於最終輸出(例如.LIB文件)?還是它們依賴於中間文件(例如.IDL文件生成的.H文件)?

Visual Studio將並行化C++項目,除了在最終的鏈接階段,它將處理依賴關係。如果您有中間依賴關係,則需要適當地配置這些依賴關係,以便它知道不要並行化這些步驟。

3

您是否嘗試過項目依賴關係?右鍵點擊你的解決方案,選擇Project Dependencies,就在Build Order下面。讓你選擇哪個項目取決於哪個項目。這會影響構建順序,所以它不應該真的有所作爲。

您究竟如何確定構建順序不正確?一種方法是在完成編譯時檢查輸出窗格。如果訂單在這裏是正確的,那麼訂單沒有錯,只是您的dll沒有在正確的時間被複制到正確的文件夾中。

通過圖書館的參考,項目是如何依賴的?在項目之間添加引用時,請確保您使用的是「項目」選項卡,而不是瀏覽到dll,因爲在編譯後需要在目錄之間複製dll。

+0

是 - 相關性配置正確並且每個都有正確的引用 – 2010-09-02 07:13:34

+2

您如何知道它們沒有按照正確的順序構建? – Martin 2010-09-02 13:12:53

+0

因爲在設置依賴關係之後,我需要它們按以下順序構建:即先沒有依賴關係的那個,以及依賴於第二個依賴關係的那個,依此類推...... – 2010-09-05 18:04:12

1

這應該解釋一切...就像馬丁說的,你只需要改變你的項目依賴關係,因爲VS非常聰明,可以根據它們來確定構建順序。這就是爲什麼你不能在你的項目依賴關係中有循環引用... VS抱怨,因爲它知道它不能滿足這兩個項目的要求。

alt text

UPDATE

項目依賴絕對確定構建順序。你可以發佈你的解決方案和項目的zip嗎?我需要爲自己看這個。:)但是踢,我做了像你概述了一個項目:

這裏是我的項目依賴關係:

項目1 - 主要應用

alt text

項目2 - 取決於項目4

alt text

項目3 - 取決於計劃2

alt text

項目4 - 不依賴

alt text

我的批量構建屏幕:

alt text

而且我的輸出窗口 - 注意構建順序。雖然我的項目1實際上被命名爲StackOverflow_BatchBuild,但項目2並未首先構建 - 項目4是。

------ Build started: Project: Project4, Configuration: Debug Any CPU ------ 
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Project4.dll /target:library Class1.cs Properties\AssemblyInfo.cs 

Compile complete -- 0 errors, 0 warnings 
Project4 -> C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project4\bin\Debug\Project4.dll 
------ Build started: Project: Project2, Configuration: Debug Any CPU ------ 
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project4\bin\Debug\Project4.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Project2.dll /target:library Class1.cs Properties\AssemblyInfo.cs 

Compile complete -- 0 errors, 0 warnings 
Project2 -> C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project2\bin\Debug\Project2.dll 
------ Build started: Project: Project3, Configuration: Debug Any CPU ------ 
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project2\bin\Debug\Project2.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Project3.dll /target:library Class1.cs Properties\AssemblyInfo.cs 

Compile complete -- 0 errors, 0 warnings 
Project3 -> C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project3\bin\Debug\Project3.dll 
------ Build started: Project: StackOverflow_BatchBuild, Configuration: Debug Any CPU ------ 
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\Project3\bin\Debug\Project3.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\StackOverflow_BatchBuild.exe /resource:obj\Debug\StackOverflow_BatchBuild.Properties.Resources.resources /target:winexe Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs 

Compile complete -- 0 errors, 0 warnings 
StackOverflow_BatchBuild -> C:\Code\trunk\vs2008\Scratch\StackOverflow_BatchBuild\bin\Debug\StackOverflow_BatchBuild.exe 
========== Build: 4 succeeded or up-to-date, 0 failed, 0 skipped ========== 
相關問題