2011-05-10 8 views
8

Tengo un proyecto MSBuild importado (appconfig.transformation.targets) que define algunas tareas y las coloca en la propiedad BuildDependsOn. He puesto este archivo en la carpeta de nivel superior para una solución (Proyectos \ LibrariesSolution \ appconfig.transformation.targets):MSBuild no ejecuta tareas BuildDependsOn de un proyecto importado

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

puedo importar este proyecto en cada archivo csproj dentro de la solución en subcarpetas. Así Proyectos \ LibrariesSolution \ Project1 \ Project1.csproj tiene algo como esto:

<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 ... 

lanzo la acumulación de este modo:

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 

pero no parecen ser llamados los objetivos enumerados en BuildDependsOn. Por supuesto, el resultado es demasiado detallado para mostrar aquí, pero "TransformWebConfig" no aparece en ninguna parte de la salida. No se muestran errores ¿Qué podría estar mal? ¿Qué debo hacer para solucionar el problema más?

Respuesta

14

Tiene un problema con la orden de importación. Está importando su archivo (appconfig.transformation.targets) que define la propiedad BuildDependsOn. Más adelante en el archivo del proyecto, se importan los objetivos de Microsoft, que redefinen BuildDependsOn y borran sus cambios porque su definición no incluye ningún valor existente en BuildDependsOn.

BuildDependsOn se define en Microsoft.Common.targets que es importado por Microsoft.CSharp.targets para un proyecto C#. Su importación debe ir después de la importación de Microsoft.CSharp.targets.

+0

Gracias. La importación ordena el problema. –

Cuestiones relacionadas