MSBuild a .dbproj 似乎运行了两次
Posted
技术标签:
【中文标题】MSBuild a .dbproj 似乎运行了两次【英文标题】:MSBuild a .dbproj seems to run twice 【发布时间】:2012-02-03 08:59:13 【问题描述】:当我们使用 msbuild.exe 从命令行构建我们的 Visual Studio 2010 数据库项目时,它有时可以从同一命令行运行两次。
我们从 nAnt 脚本调用 msbuild,然后调用“Build”目标。我们的数据库项目非常大,因此一次运行大约需要 4 分钟。当它运行两次时,我们的数据库构建需要超过 8 分钟。
这是我们用来调用构建的 exec 部分。它在一个只有一个 .dbproj 的 .sln 文件上运行。
<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="."" />
<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】:首先尝试将输出详细程度更改为 MSBuild 的诊断:
<arg value="/v:diag" />
对于 Ant 脚本也是如此。我没有使用 Ant 的经验,但你应该知道怎么做;) 希望您能在诊断日志中找到原因...
顺便说一句: 您有重复的 MSBuild 命令行选项。从以下内容中删除一个 arg:
<arg value="/verbosity:normal" />
<arg value="/v:m" />
/v 是 /verbosity see MSDN 的缩写,用于 MSBuild 命令行选项参考。
【讨论】:
以上是关于MSBuild a .dbproj 似乎运行了两次的主要内容,如果未能解决你的问题,请参考以下文章