Сборка .NET проекта останавливается с ошибкой:
10:42:42.010 (AfterBuild target) ->
10:42:42.010 C:\GO\pipelines\Platform\server\Platform_Soln\Platform.CMS\Platform.CMS.csproj(2584,5): error MSB4036: The «TransformXml» task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is «public» and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the «C:\Windows\Microsoft.NET\Framework64\v4.0.30319» directory.
Находим задачу TransformXml
в csproj проекта:
... <Target Name="AfterBuild"> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Micronsoft\VisualStudio\v10.0\\Web\Microsoft.Web.Publishing.targets')"/> <TransformXml Source="config\umbracoSettings.config" Transform="config\umbracoSettings.$(Configuration).config" Destination="config\umbracoSettings.config" /> </Target> ...
Для Windows 7 x64 переменная MSBuildExtensionsPath32
указывает на каталог \Program Files (x86)\MSBuild
.
Следовательно, путь:
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets
будет раскрываться как:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets
Ищем файл Microsoft.Web.Publishing.targets
в каталоге C:\Program Files (x86)
:
> dir /A /S /P "C:\Program Files (x86)"\Microsoft.Web.Publishing.targets Volume in drive C has no label. Volume Serial Number is 8077-60D5 Directory of C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web 18/01/2011 23:09 227,873 Microsoft.Web.Publishing.targets 1 File(s) 227,873 bytes Directory of C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web 12/05/2015 20:11 275,016 Microsoft.Web.Publishing.targets 1 File(s) 275,016 bytes Directory of C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web 25/06/2015 18:12 275,661 Microsoft.Web.Publishing.targets 1 File(s) 275,661 bytes Total Files Listed: 3 File(s) 778,550 bytes 0 Dir(s) 16,385,974,272 bytes free
Первый результат поиска показывает, что target-файл на месте.
Проверяем AssemblyFile
, который указан в target-файле для задачи TransformXml
:
> type "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" | findstr /R "TransformXml" <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll"/>
Проверяем его наличие в каталоге:
> dir "C:\Program Files (x86)"\MSBuild\Microsoft\VisualStudio\v10.0\Web Volume in drive C has no label. Volume Serial Number is 8077-60D5 Directory of C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web ... 18/01/2011 23:09 227,873 Microsoft.Web.Publishing.targets 21/02/2011 17:04 337,272 Microsoft.Web.Publishing.Tasks.Dll
Всё верно, dll-файл на месте, но через импорт Microsoft.Web.Publishing.targets
билд не работает.
Для решения — укажем AssemlyFile
напрямую, добавив перед вызовом <Target Name="AfterBuild">
элемент <UsingTask />
:
... <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> <Target Name="AfterBuild"> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Micronsoft\VisualStudio\v10.0\\Web\Microsoft.Web.Publishing.targets')"/> <TransformXml Source="config\umbracoSettings.config" Transform="config\umbracoSettings.$(Configuration).config" Destination="config\umbracoSettings.config" /> </Target> ...
И результат билда:
... 11:33:01.237 AfterBuild: 11:33:01.237 Transforming Source File: config\umbracoSettings.config 11:33:01.439 Applying Transform File: config\umbracoSettings.Debug.config 11:33:02.001 Output File: config\umbracoSettings.config 11:33:02.064 Transformation succeeded 11:33:02.064 Done Building Project "C:\GO\pipelines\Platform\server\Platform_Soln\Platform.CMS\Platform.CMS.csproj" (default targets).