2010-08-26 2 views
0

У меня есть решение с 4 проектами внутри. То, что я хочу сделать, - это изменить порядок сборки пакета (щелкните правой кнопкой мыши решение Batch Build ...). Я настроил порядок сборки, но это, похоже, не имеет значения.Batch Build VS2008 Решение

В настоящее время они, как представляется, просто перечисляют их в том порядке, в котором они отображаются в проводнике решений, но у них есть зависимости любого другого в другом порядке. Например:

Solution 
    - Project1 
    - Project2 
    - Project3 
    - Project4 

Но зависимости означает, что нужно строить в следующем порядке:

Solution 
    - Project4 
    - Project2 
    - Project3 
    - Project1 

Возможно ли это, и если да, то как?

+0

Откуда вы знаете, что это не работает? Не компилируется ли код или возникают ошибки при попытке выполнить приложение? – Dave

ответ

1

Являются ли эти проекты C++ или C#? Если они являются проектами на C++, зависят они от конечного вывода (например, файлы LIB)? Или они зависят от промежуточных файлов (файлы .H, созданные из файлов .IDL, например)?

Visual Studio будет распараллелить проекты на C++, за исключением этапа окончательной компоновки, где он будет обрабатывать зависимости. Если у вас есть промежуточные зависимости, вам необходимо настроить их соответствующим образом, чтобы он не мог распараллелить эти шаги.

3

Вы пробовали проектные зависимости? Щелкните правой кнопкой мыши на своем решении, выберите «Зависимости проекта», прямо под строкой «Порядок заказа». Это позволяет вам выбирать, от каких проектов зависит. Это влияет на порядок сборки, поэтому это не должно иметь особого значения.

Как именно вы определяете, что порядок сборки неверен? Один из способов - проверить панель вывода, когда вы будете полностью компилировать. Если порядок здесь правильный, то порядок не является неправильным, просто ваши DLL не будут скопированы в нужные папки в нужное время.

Как зависят проекты, по ссылке библиотеки? При добавлении ссылок между проектами убедитесь, что вы используете вкладку «Проект», а не просматриваете DLL, потому что вам нужно скопировать dll между каталогами после компиляции.

+0

Да - зависимости настроены правильно и у каждого есть правильные ссылки –

+2

Как вы знаете, что они не строятся в правильном порядке? – Martin

+0

Потому что после того, как я настроил зависимости, мне нужно, чтобы они построили в этом порядке: то есть тот, у кого нет зависимостей, и тот, который зависит от этой секунды, и так далее ... –

1

Это должно объяснить все ... Как сказал Мартин, вам просто нужно изменить зависимости проекта, потому что VS благодарен достаточно умным, чтобы выяснить порядок сборки на их основе. Вот почему вы не можете иметь круговые ссылки в зависимостях проекта ... VS жалуется, потому что знает, что не сможет удовлетворить требования обоих проектов.

alt text

UPDATE

Проект Зависимости определенно определить порядок сборки. Можете ли вы опубликовать zip вашего решения и проектов? Мне нужно это посмотреть для себя.:) Но для пинков, я сделал проект, как то, что вы наметили:

Вот мои зависимости проекта:

Проект 1 - главное приложение

alt text

Project 2 - зависит от проекта 4

alt text

Проект 3 - зависит от проекта 2

alt text

Project 4 - нет зависимостей

alt text

Моего экрана сборки партии:

alt text

И мое окно вывода - обратите внимание на порядок сборки. Хотя мой проект 1 действительно называется StackOverflow_BatchBuild, проект 2 не был построен первым - Project 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 ========== 
Смежные вопросы