No se encontró la tarea "TransformXml" (error MSB4036) en la compilación de TeamCity


Hola tengo servidor de compilación con TeamCity. Mi proyecto es la aplicación web de Sitecore. Estoy usando TDS (HedgehogDevelopment). Tengo configuración de compilación en TeamCity con MS build y parece que funciona cuando el proyecto TDS está deshabilitado en build configuration manager. Pero entonces se enebled estoy recibiendo error neto

C:\Program Archivos (x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0 \ HedgehogDevelopment.Proyecto Sitecorep.objetivos(310, 5): error MSB4036 :El " TransformXml" no se encontró la tarea. Compruebe el siguiente: 1.) El nombre de la tarea en el archivo de proyecto es el mismo que el nombre de la clase task. 2.) La clase task es "pública" y implementa Microsoft.Construir.Marco.Interfaz ITask. 3.) Tarea se declara correctamente con en el archivo de proyecto, o en el *.tareas archivos ubicados en el "C:\Windows\Microsoft.NET\Framework64\v3.5" directorio. Proyecto NetKey.TDSMaster\MyProject.TDSMaster.scproj falló. Proyecto Sitio web\MyProject.sln failed

La ayuda en la descripción de error no es un caso para mí. No tengo VS 2012 en build machine. He instalado Microsoft Visual Studio 2012 Shell para apoyar mi proyecto web. Cómo resolverlo ? Gracias.

Author: Yan Sklyarenko, 2013-05-20

5 answers

TransformXML viene como parte de la ASP.NET Herramientas de publicación web. Como tales, generalmente vienen con una instalación de Visual Studio en su servidor de compilación y requieren más que solo la versión Shell de Visual Studio. La instalación de Visual Studio Express Web Edition también podría hacer el truco.

Podría intentar instalar el Web-Deploy paquete para ver si es suficiente, pero normalmente solo instalo la versión completa de Visual Studio en un agente de compilación. Esto es legal bajo MSDN Subscription licenciar.

Después de experimentar, puedo decir que necesita instalar al menos las Herramientas de Desarrollo Web de Visual Studio en el servidor de compilación para que estas tareas se instalen de la manera oficial. Sospecho que la instalación de Visual Studio Express Web Edition sería suficiente.

introduzca la descripción de la imagen aquí

 21
Author: jessehouwing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 06:27:22

Prueba esto:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
 17
Author: Choquequirao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-13 16:42:50

Respuesta corta-Importación explícita

Lo que tenía que hacer:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />

Respuesta larga

Cuando haces Archivo -> Nuevo proyecto web en VS2013 obtienes lo siguiente dentro de tu *.archivo csproj:

<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

El $(VisualStudioVersion) siempre se evalúa a 11.0 para mí en máquinas de compilación y en múltiples máquinas de desarrollo. Incluso en máquinas con VS2013, que es 12.0.

Buceando en eso encontré que en el Microsoft.WebApplication.targets de arriba, tiene una línea para importar el archivo que realmente quiero Microsoft.Web.Publishing.targets solo si existe así en la línea 377:

<!--Import publishing target-->
<Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" />

Así que para mí esto es una importación implícita de Microsoft.Web.Publishing.targets.

El problema es que si este archivo no existe, no hace nada y no lo sabes hasta que recibes el error al intentar usar la tarea TransformXml.

Al instalar VS2013 no se instaló Microsoft.Web.Publishing.targets en el directorio 11.0. Lo instaló en el directorio 12.0. Supongo que si instalo VS2012, haría se.

En cualquier caso, pude resolverlo mediante explícitamente importando Microsoft.Web.Publishing.targets desde el directorio 12.0 si no existía y no era implícitamente importado por Microsoft.WebApplication.targets de la siguiente manera:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
 12
Author: Rick Glos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-26 21:33:13

En Visual Studio 2017 por defecto la mayoría(o todos?) los componentes no están instalados, pero puede agregar lo que se requiere (p. ej. Asp.Net y desarrollo web) como se describe en https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio .

En mi máquina el instalador se encuentra en "C:\Program Files (x86)\Microsoft Visual Studio\Installer \ vs_installer.exe "

 1
Author: Michael Freidgeim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-13 21:19:43

Tuve el mismo problema después de degradar las herramientas de TypeScript de 2.4.10 a 2.3.3 en VS2015.

Solución:

Elimino esto de Microsoft.TypeScript.archivo de objetivos

    <FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'NoneSpecified'"
  Culture="$(PreferredUILang)" 
  Name="TypeScriptNoVersionWarning" 
  Arguments="$(LastKnownTypeScriptVersion)">
  <Output TaskParameter="String" PropertyName="TypeScriptNoVersionWarning" />
</FormatLocalizedString>

<FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'Downgrade' OR '$(TypeScriptVersionCheckResult)' == 'Upgrade'"
  Culture="$(PreferredUILang)" 
  Name="TypeScriptVersionMismatchWarning" 
  Arguments="$(TypeScriptToolsVersion);$(LastKnownTypeScriptVersion)">
  <Output TaskParameter="String" PropertyName="TypeScriptVersionMismatchWarning" />
</FormatLocalizedString>
 0
Author: imfloflo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 08:56:15