【问题标题】:MSBuild not running BuildDependsOn tasks from an imported projectMSBuild 未从导入的项目运行 BuildDependsOn 任务
【发布时间】:2011-05-10 14:43:05
【问题描述】:

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

<PropertyGroup>
  <BuildDependsOn>
    TransformWebConfig;
    OverrideAppConfigWithTargetPath;
    $(BuildDependsOn);
    CopyTransformedConfig
  </BuildDependsOn>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />

我在子文件夹中解决方案内的每个 csproj 文件中导入此项目。所以 Projects\LibrariesSolution\Project1\Project1.csproj 有这样的东西:

<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

但 BuildDependsOn 中列出的目标似乎没有被调用。当然,输出过于冗长,无法在此处显示,但“TransformWebConfig”不会出现在输出中的任何位置。没有显示错误。有什么问题?我应该怎么做才能进一步解决这个过程?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。导入顺序问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    相关资源
    最近更新 更多