Пакетное решение VS2008 - PullRequest
       1

Пакетное решение VS2008

0 голосов
/ 26 августа 2010

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

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

Solution
   - Project1
   - Project2
   - Project3
   - Project4

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

Solution
   - Project4
   - Project2
   - Project3
   - Project1

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

Ответы [ 3 ]

3 голосов
/ 01 сентября 2010

Вы пробовали зависимости проекта?Щелкните правой кнопкой мыши по вашему решению, выберите Project Dependencies, прямо под Build Order.Это позволяет вам выбирать, какие проекты зависят от каких.Это влияет на порядок сборки, поэтому на самом деле это не должно иметь значения.

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

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

1 голос
/ 08 сентября 2010

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

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

1 голос
/ 07 сентября 2010

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

alt text

UPDATE

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

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

Проект 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 ==========
...