Это должно объяснить все ... Как сказал Мартин, вам просто нужно изменить зависимости вашего проекта, потому что VS, к счастью, достаточно умен, чтобы выяснить порядок сборки на их основе. Вот почему у вас не может быть циклических ссылок в ваших зависимостях проекта ... VS жалуется, потому что знает, что не сможет удовлетворить требования обоих проектов.
![alt text](https://i.stack.imgur.com/gj8bN.png)
UPDATE
Зависимости проекта определенно определяют порядок сборки. Можете ли вы опубликовать почтовый индекс вашего решения и проектов? Мне нужно увидеть это для себя. :) Но ради забавы я сделал проект, подобный тому, что вы наметили:
Вот мои зависимости проекта:
Проект 1 - главное приложение
![alt text](https://i.stack.imgur.com/7QMTE.png)
Проект 2 - зависит от Проекта 4
![alt text](https://i.stack.imgur.com/484ZD.png)
Проект 3 - зависит от Проекта 2
![alt text](https://i.stack.imgur.com/uIBSU.png)
Проект 4 - нет зависимостей
![alt text](https://i.stack.imgur.com/GVzu8.png)
Экран моей пакетной сборки:
![alt text](https://i.stack.imgur.com/Tktda.png)
И мое окно вывода - обратите внимание на порядок сборки. Хотя мой Проект 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 ==========