MSBuild .dbproj, кажется, запускается дважды - PullRequest
0 голосов
/ 03 февраля 2012

Когда мы создаем наш проект базы данных Visual Studio 2010 из командной строки, используя msbuild.exe, он иногда может запускаться дважды из одной и той же командной строки.

Мы вызываем msbuild из сценария nAnt и просто вызываем 'Построить цель.Наш проект базы данных довольно большой, поэтому для его выполнения может потребоваться около 4 минут.Когда он проходит дважды, сборка базы данных занимает более 8 минут.

Вот раздел exec, который мы используем для вызова сборки.Он работает с файлом .sln, в котором есть только один файл .dbproj.

<exec program="${framework::get-tool-path('msbuild.exe')}" append="true" failonerror="true" verbose="true">
    <arg value="${database.sln}" />
    <arg value="/p:OutputPath=${build.output.database}" />
    <arg value="/nologo" />
    <arg value="/t:Build" />
    <arg value="/p:Configuration=Release" />
    <arg value="/p:WorkingDir=&quot;.&quot;" />
    <arg value="/verbosity:normal" />
    <arg value="/v:m" />
</exec>

Получаемый нами результат выглядит так:

Creating a model to represent the project...
Loading project references...
Loading project files...
Building the project model and resolving object interdependencies...
Validating the project model...
(x) problems have been detected.
[a list of warnings based on the db analysis]
The results are saved in (y).
Creating a model to represent the project...
Loading project references...
Loading project files...
Building the project model and resolving object interdependencies...
Validating the project model...
(x) problems have been detected.
[a list of warnings based on the db analysis]
The results are saved in (y).

Может кто-нибудь помочь с объяснением причины цели?быть вызванным дважды (только иногда - я не понял почему только иногда).Сценарий всегда выполняется в пустой структуре папок, поэтому после предыдущего запуска сборки никогда не остается вывод сборки.

1 Ответ

0 голосов
/ 03 февраля 2012

Прежде всего попробуйте изменить выходную детализацию на диагностическую для MSBuild:

<arg value="/v:diag" />

И то же самое для сценария Ant. У меня нет опыта работы с Ant, но вы должны знать, как это сделать;) Надеюсь, вы найдете причину в журналах диагностики ...

КСТАТИ: У вас есть дубликаты параметров командной строки для MSBuild. Удалить один аргумент из следующего:

<arg value="/verbosity:normal" />
<arg value="/v:m" />

/ v является аббревиатурой для / verbosity См. MSDN для ссылки на параметры командной строки MSBuild.

...