MSBuild не запускает задачи BuildDependsOn из импортированного проекта - PullRequest
9 голосов
/ 10 мая 2011

У меня есть импортированный проект 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» не отображается нигде в выходных данных.Ошибки не отображаются.Что может быть не так?Что я должен сделать, чтобы устранить неполадки в процессе?

1 Ответ

14 голосов
/ 11 мая 2011

У вас проблема с заказом на импорт. Вы импортируете свой файл (appconfig.transformation.targets), который определяет свойство BuildDependsOn. Позже в файле проекта импортируются цели Microsoft, которые переопределяют BuildDependsOn и стирают ваши изменения, поскольку их определение не включает в себя какое-либо существующее значение в BuildDependsOn.

BuildDependsOn определен в Microsoft.Common.targets, который импортируется Microsoft.CSharp.targets для проекта C #. Ваш импорт должен идти после импорта Microsoft.CSharp.targets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...