我们有一个MsBuild.proj文件,其中包含以下部分(简化):
<Target Name="WEB" DependsOnTargets="CleanResults;UpdateAssemblyInfo;Services;Business">
<!-- Other build and release stuff -->
<MSBuild Projects="$(CreateInstallValuesScriptProjectFile)" Properties="DatabaseStructureLocation=$(DatabaseDirectory)\Sandbox\002.Structure" />
</Target>
基本上,InstallValuesScript在我们的数据库目录中生成一个.sql文件,该文件将更新我们在数据库中的应用程序版本。相当简单。
构建被称为:
MSBuild msbuild.proj /m /t:WEB /p:Configuration=Release;DoRelease=true;DoSandBox=false;DoWix=false /fileLoggerParameters:LogFile=msbuild.log;Verbosity=normal;Encoding=UTF-8
然而,我们看到的是InstallValues部分被多次调用,因此这个文件被创建了几次,并且在不同的位置...显然当构建编译两到三次时而不是只有一次,那令人讨厌,但并不是真正的关键(只是稍慢),但是对于这个Installvalues文件,我们真的不想要它的多个实例。
那么是什么,可以多次调用目标?可能是由编译依赖程序集引起的?关于这个奇怪的现象的一些亮点将受到高度赞赏。
答案 0 :(得分:2)
一般情况下,除非编辑:即使您<CallTask>
,MSBuild也不会在给定的构建顶层调用中多次运行Target,甚至< / em>如果你在依赖项中有重复项(顺序很重要,但一旦完成,它就完成了)。
您是否对项目文件进行了一些调用,这些文件以某种复杂的方式链接?
但是真相在日志中[你似乎正在如此刻苦地创造!]