MSBuild未从导入的项目运行BuildDependsOn任务

MSBuild未从导入的项目运行BuildDependsOn任务,msbuild,Msbuild,我有一个导入的MSBuild项目(appconfig.transformation.targets),它定义了一些任务并将它们放在BuildDependsOn属性中。我已将此文件放置在解决方案的顶级文件夹中(Projects\LibrariesSolution\appconfig.transformation.targets): 但是BuildDependsOn中列出的目标似乎没有被调用。当然,输出过于冗长,无法在此处显示,但“TransformWebConfig”不会出现在输出中的任何位置。没

我有一个导入的MSBuild项目(appconfig.transformation.targets),它定义了一些任务并将它们放在BuildDependsOn属性中。我已将此文件放置在解决方案的顶级文件夹中(Projects\LibrariesSolution\appconfig.transformation.targets):


但是BuildDependsOn中列出的目标似乎没有被调用。当然,输出过于冗长,无法在此处显示,但“TransformWebConfig”不会出现在输出中的任何位置。没有显示任何错误。有什么不对劲吗?我应该如何进一步排除流程故障?

您遇到了导入订单问题。您正在导入定义BuildDependsOn属性的文件(appconfig.transformation.targets)。稍后在项目文件中,将导入Microsoft目标,这将重新定义BuildDependsOn并删除您的更改,因为它们的定义不包括BuildDependsOn中的任何现有值


BuildDependsOn在Microsoft.Common.targets中定义,它是由Microsoft.CSharp.targets为C#项目导入的。您的导入应该在导入Microsoft.CSharp.targets之后进行。

谢谢。进口订单解决了这个问题。
<PropertyGroup>
  <BuildDependsOn>
    TransformWebConfig;
    OverrideAppConfigWithTargetPath;
    $(BuildDependsOn);
    CopyTransformedConfig
  </BuildDependsOn>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
  <Import Project="..\appconfig.transformation.targets" />
  ... the rest of the csproj stuff ...
cd LibrariesSolution
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Clean /p:Configuration=Release Project1\Project1.csproj
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Build /p:Configuration=Release Project1\Project1.csproj