Выходной путь и MSBuild

У меня есть решение с 9 проектами. Все ссылки в каждом проекте имеют для свойства CopyLocal значение False.

Когда я создаю его из VS, ни один из этих двоичных файлов, на которые есть ссылки, не копируется в выходной каталог сборки. Точно так же, когда я строю с помощью msbuild, я вижу только двоичные файлы проекта и никаких ссылок.

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


person Tonks94    schedule 17.09.2012    source источник
comment
Прикрепите /v:diag к командной строке, и тогда у вас будет множество записей журнала для анализа.   -  person Lex Li    schedule 19.09.2012
comment
что вы пытаетесь решить здесь? Вы пытаетесь собрать все в одну и ту же выходную папку?   -  person Nick Nieslanik    schedule 02.10.2012


Ответы (1)


При сборке приложения без установки свойства OutDir файлы копируются в путь, указанный в свойствах проекта (Путь сборки\вывода). После этого следует еще один шаг, при котором выходные данные проекта (файл *.dll) копируются в OutDir вашего приложения (*.exe). Но если вы установите CopyLocal в false, этот последний шаг не произойдет. Так:

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\b\bin

Обратите внимание на то, что два OutDir различны (и по-разному указаны в свойствах ваших проектов).

Но когда вы устанавливаете OutDir с помощью командной строки, вы устанавливаете оба параметра OutDir на один и тот же путь. По-прежнему нет окончательной копии DLL в том же каталоге вашего приложения, за исключением того факта, что это то же самое место, где вы создали DLL и EXE в первый раз. Так:

msbuild yourSolution.sln /p:OutDir="c:\a\bin\"

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\a\bin
person Marlos    schedule 11.01.2013