2010-08-26 171 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 ========== 
相关问题